Senior
Mi az a middleware a Go HTTP szerverekben, és hogyan valósítják meg?
sobes.tech MI
Válasz az MI-től
A middleware a Go HTTP szervereken olyan funkció vagy funkciókészlet, amely becsomagolja a kéréskezelőt (http.Handler), hogy további logikát adjon hozzá, például naplózást, hitelesítést, hibakezelést stb.
Implementálása egy olyan függvényként történik, amely elfogad egy http.Handler-t és visszaad egyet. Példa:
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) // a következő kezelőt hívja
})
}
// Használat
mux := http.NewServeMux()
mux.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) {
w.Write([]byte("Hello"))
})
loggedMux := loggingMiddleware(mux)
http.ListenAndServe(":8080", loggedMux)
Így a middleware lehetővé teszi a kérések szekvenciális feldolgozását, szükséges funkcionális rétegek hozzáadásával anélkül, hogy módosítaná a fő kezelőt.