Senior
Was ist Middleware in Go HTTP-Servern und wie wird es implementiert?
sobes.tech KI
Antwort von AI
Middleware in Go-HTTP-Servern ist eine Funktion oder eine Reihe von Funktionen, die den Request-Handler (http.Handler) umwickeln, um zusätzliche Logik hinzuzufügen, z.B. Logging, Authentifizierung, Fehlerbehandlung usw.
Wird als Funktion implementiert, die einen http.Handler entgegennimmt und einen http.Handler zurückgibt. Beispiel:
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) // ruft den nächsten Handler auf
})
}
// Verwendung
mux := http.NewServeMux()
mux.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) {
w.Write([]byte("Hello"))
})
loggedMux := loggingMiddleware(mux)
http.ListenAndServe(":8080", loggedMux)
Auf diese Weise ermöglicht Middleware die sequenzielle Verarbeitung von Anfragen, indem sie notwendige funktionale Schichten hinzufügt, ohne den Haupt-Handler zu verändern.