Sobes.tech
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 сўровларни навбатда ишлов беришга имкон беради, асосий ишловчини ўзгартирмай, керакли функцияли қаватларни қўшиш имконини беради.