Sobes.tech
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.