Senior
Go HTTP serverlarida middleware nima va uni qanday amalga oshiriladi?
sobes.tech AI
AIdan javob
Go HTTP серверларида middleware — бу сўровни ишлов беришчи (http.Handler) ни ёпиб қўйган ва қўшимча логика қўшиш учун ишлатиладиган функция ёки функциялар тўплами, масалан, журналга олиш, аутентификация, хато ишлов бериш ва ҳоказо.
Middleware, http.Handler қабул қиладиган ва қайтарувчи функция сифатида амалга оширилади. Мисол:
func loggingMiddleware(next http.Handler) http.Handler {
return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
log.Printf("Request: %s %s", r.Method, r.URL.Path)
next.ServeHTTP(w, r) // кейинги ишловчини чақириш
})
}
// Қўлланиш
mux := http.NewServeMux()
mux.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) {
w.Write([]byte("Hello"))
})
loggedMux := loggingMiddleware(mux)
http.ListenAndServe(":8080", loggedMux)
Шу тариқа, middleware сўровларни навбатда ишлов беришга имкон беради, асосий ишловчини ўзгартирмай, керакли функцияли қаватларни қўшиш имконини беради.