Maison > développement back-end > Golang > Comment puis-je enregistrer les informations de réponse aux requêtes HTTP entrantes à l'aide d'un middleware ?

Comment puis-je enregistrer les informations de réponse aux requêtes HTTP entrantes à l'aide d'un middleware ?

Patricia Arquette
Libérer: 2024-10-29 19:59:30
original
626 Les gens l'ont consulté

How can I log response information for incoming HTTP requests using middleware?

Consignation des réponses aux requêtes HTTP entrantes avec un middleware

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.

Middleware Chaining

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.

Implémentation d'un middleware pour la 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>
Copier après la connexion

Ce middleware enregistre la réponse dans un httptest.Recorder et la copie dans le http.ResponseWriter réel.

Combining Middleware

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>
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal