Lors de l'utilisation de Gorilla mux pour le routage, une exigence courante est d'inclure un middleware qui traite chaque demande entrante. Cet article fournit une solution complète à cette intégration.
Pour établir un middleware, créez une fonction wrapper :
func Middleware(h http.Handler) http.Handler { return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { log.Println("middleware", r.URL) h.ServeHTTP(w, r) }) }
Ce wrapper enregistre l'URL de la requête et passe le contrôle au gestionnaire suivant.
Pour utiliser ce middleware avec Gorilla mux :
r := mux.NewRouter() r.HandleFunc("/", HomeHandler) http.Handle("/", Middleware(r))
Dans cette configuration, le middleware gère toutes les requêtes acheminées par multiplexeur vers le chemin "/".
Résolution des fuites de mémoire Gorilla/Sessions
Pour éviter le problème de fuite de mémoire lorsque vous n'utilisez pas Gorilla/mux, suivez la recommandation :
http.ListenAndServe(":"+portstring, context.ClearHandler(r))
Cela enveloppe le routeur avec context.ClearHandler pour éviter les fuites de mémoire.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!