Maison > Article > développement back-end > Comment enregistrer les données de réponse de http.ResponseWriter dans Go ?
Consignation des données de http.ResponseWriter
Dans Go, vous pouvez utiliser diverses techniques pour enregistrer les données émises à partir d'un cycle requête-réponse HTTP. Une question courante consiste à obtenir les données écrites sur http.ResponseWriter à des fins de journalisation.
Solution : Utilisation de io.MultiWriter
Pour capturer les données de réponse, vous pouvez utiliser le io.MultiWriter pour dupliquer les écritures sur un graveur distinct. Dans votre code, vous pouvez créer une nouvelle instance bytes.Buffer comme tampon de journal et la transmettre comme l'un des rédacteurs à io.MultiWriter. En utilisant MultiWriter comme rédacteur de réponse, vous pouvez dupliquer les données de réponse dans le tampon de journal.
Exemple de code :
<code class="go">import ( "bytes" "io" "net/http" ) func api1(w http.ResponseWriter, req *http.Request) { var log bytes.Buffer rsp := io.MultiWriter(w, &log) // Use rsp instead of w from this point onward // ... }</code>
Maintenant, le tampon de journal ( log) contiendra une copie des données de réponse écrites à l'auteur de la réponse.
Solution alternative : utilisation de io.TeeReader
Pour capturer les données de la demande, vous pouvez utiliser io.TeeReader. Il crée un lecteur qui écrit tout ce qu'il lit d'un lecteur donné vers un écrivain fourni. Dans ce cas, vous pouvez l'utiliser pour enregistrer une copie du corps de la requête dans le tampon de journal.
Exemple de code :
<code class="go">import ( "bytes" "io" "net/http" ) func api1(w http.ResponseWriter, req *http.Request) { var log bytes.Buffer tee := io.TeeReader(req.Body, &log) // Use tee instead of req.Body from this point onward // ... }</code>
Avec io.TeeReader, le tampon de journal inclura une copie du contenu du corps de la requête.
En utilisant ces techniques, vous pouvez enregistrer à la fois les données de requête et de réponse, facilitant ainsi la journalisation complète des requêtes 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!