Dans le développement Web, la journalisation des informations de réponse pour suivre et déboguer les requêtes HTTP est essentielle. Bien que la fonction httputil.DumpResponse fournisse des fonctionnalités pour vider les réponses, elle fonctionne sur le type http.Response, ce qui limite son utilisation pour la journalisation des requêtes entrantes.
Une approche courante pour enregistrer les informations de réponse aux demandes entrantes consiste à utiliser le chaînage de middleware. Les fonctions middleware sont exécutées avant et après les gestionnaires de requêtes. Ces fonctions peuvent modifier les objets de requête et de réponse, fournissant ainsi un mécanisme pratique de journalisation.
Pour implémenter un enregistreur de middleware, définissez un combinateur de gestionnaire :
<code class="go">func NewResponseLoggingHandler(next http.HandlerFunc) http.HandlerFunc { return func(w http.ResponseWriter, r *http.Request) { c := httptest.NewRecorder() next(c, r) for k, v := range c.HeaderMap { w.Header()[k] = v } w.WriteHeader(c.Code) c.Body.WriteTo(w) } }</code>
Ce middleware enregistre la réponse dans un httptest.Recorder et la copie dans le http.ResponseWriter réel.
Pour inclure le middleware de journalisation dans toutes les chaînes de gestionnaires, définissez un combinateur de gestionnaire par défaut :
<code class="go">func NewDefaultHandler(next http.HandlerFunc) http.HandlerFunc { return NewResponseLoggingHandler(NewOtherStuffHandler(next)) }</code>
En utilisant ce gestionnaire par défaut, toutes les chaînes suivantes incluront le middleware de journalisation des réponses.
Ceci Cette approche fournit un moyen flexible et réutilisable de consigner les informations de réponse aux requêtes HTTP entrantes. Il permet une intégration facile avec les chaînes de gestionnaires existantes et peut être configuré pour répondre à des besoins de journalisation spécifiques.
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!