Maison > développement back-end > Golang > le corps du texte

Comment puis-je enregistrer les données de requête et de réponse dans mon API HTTP ?

Susan Sarandon
Libérer: 2024-11-05 18:04:02
original
864 Les gens l'ont consulté

How Can I Log Both Request and Response Data in My HTTP API?

Consignation des données de réponse HTTP pour une journalisation complète

Un défi courant dans la journalisation consiste à capturer à la fois les données de demande et de réponse dans un seul journal. Par défaut, le contenu du flux http.ResponseWriter n'est pas accessible, ce qui rend difficile l'extraction de la réponse à des fins de journalisation. Cependant, il existe des moyens d'obtenir cette capacité.

Une approche consiste à utiliser l'utilitaire io.MultiWriter. En créant un rédacteur qui duplique ses écritures vers plusieurs destinations, nous pouvons enregistrer la réponse et l'envoyer au client simultanément :

<code class="go">func api1(w http.ResponseWriter, req *http.Request) {
    var log bytes.Buffer
    rsp := io.MultiWriter(w, &log)

    // Perform operations and write to 'rsp'

    // Now, 'log' contains a duplicate of the response data sent to the client.
}</code>
Copier après la connexion

Une autre option consiste à utiliser io.TeeReader pour créer un lecteur qui écrit sur un écrivain spécifié. Cela nous permet de créer une copie du flux req.Body et de l'enregistrer dans le tampon de journal :

<code class="go">func api1(w http.ResponseWriter, req *http.Request) {
    var log bytes.Buffer
    tee := io.TeeReader(req.Body, &log)

    // Perform operations using tee as the 'body'

    // Now, 'log' contains a copy of the request body data.
}</code>
Copier après la connexion

Ces techniques vous permettent de capturer à la fois les données de demande et de réponse dans vos journaux, offrant ainsi une vue complète de l'activité de votre API.

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
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!