Sobes.tech
Senior

Czym jest middleware w serwerach HTTP Go i jak jest implementowane?

sobes.tech AI

Odpowiedź od AI

Middleware w serwerach HTTP Go to funkcja lub zestaw funkcji, które opakowują obsługę żądania (http.Handler), aby dodać dodatkową logikę, taką jak logowanie, uwierzytelnianie, obsługa błędów itp.

Implementuje się je jako funkcję przyjmującą http.Handler i zwracającą http.Handler. Przykład:

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) // wywołanie następnego obsługiwacza
    })
}

// Użycie
mux := http.NewServeMux()
mux.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) {
    w.Write([]byte("Hello"))
})

loggedMux := loggingMiddleware(mux)
http.ListenAndServe(":8080", loggedMux)

W ten sposób middleware pozwala na sekwencyjne przetwarzanie żądań, dodając potrzebne warstwy funkcjonalne bez zmiany głównego obsługiwacza.