Sobes.tech
Senior

Qu'est-ce que le middleware dans les serveurs HTTP Go et comment est-il implémenté?

sobes.tech IA

Réponse de l'IA

Le middleware dans les serveurs HTTP Go est une fonction ou un ensemble de fonctions qui enveloppent le gestionnaire de requêtes (http.Handler) pour ajouter une logique supplémentaire, comme la journalisation, l'authentification, la gestion des erreurs, etc.

Il est implémenté comme une fonction qui prend un http.Handler et retourne un http.Handler. Exemple :

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) // appelle le gestionnaire suivant
    })
}

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

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

Ainsi, le middleware permet de traiter les requêtes de manière séquentielle, en ajoutant des couches fonctionnelles nécessaires sans modifier le gestionnaire principal.