Sobes.tech
Senior

Wat is middleware in Go HTTP-servers en hoe wordt het geïmplementeerd?

sobes.tech AI

Antwoord van AI

Middleware in Go HTTP-servers is een functie of een set functies die de request-handler (http.Handler) omhult om extra logica toe te voegen, zoals logging, authenticatie, foutafhandeling, enz.

Het wordt geïmplementeerd als een functie die een http.Handler accepteert en een http.Handler retourneert. Voorbeeld:

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) // roept de volgende handler aan
    })
}

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

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

Op deze manier maakt middleware het mogelijk om verzoeken sequentieel te verwerken, door de benodigde functionele lagen toe te voegen zonder de hoofdhandler te wijzigen.