Sobes.tech
Senior

Ce este middleware în serverele HTTP Go și cum este implementat?

sobes.tech AI

Răspuns de la AI

Middleware în serverele HTTP Go este o funcție sau un set de funcții care învelesc handler-ul de solicitări (http.Handler) pentru a adăuga logică suplimentară, cum ar fi înregistrarea, autentificarea, gestionarea erorilor etc.

Se implementează ca o funcție care primește un http.Handler și returnează un http.Handler. Exemplu:

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) // apelarea următorului handler
    })
}

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

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

Astfel, middleware permite procesarea secvențială a solicitărilor, adăugând straturi funcționale necesare fără a modifica handler-ul principal.