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