Maison > développement back-end > Golang > Comment réutiliser http.request.body dans Golang

Comment réutiliser http.request.body dans Golang

藏色散人
Libérer: 2020-10-20 13:58:11
avant
2890 Les gens l'ont consulté

La colonne suivante du tutoriel golang vous présentera un exemple de la méthode de réutilisation de http.request.body dans golang. J'espère que cela sera utile aux amis dans le besoin. !

Comment réutiliser http.request.body dans Golang

Problèmes et scénarios

Il est nécessaire de distribuer http.request.body sur la scène des affaires. Par exemple, les messages de rappel WeChat ne peuvent spécifier qu'une seule adresse, il est donc prévu qu'une copie du message puisse être envoyée à d'autres services. Le service B et le service A, qui reçoivent les rappels WeChat, traitent ensemble les informations de rappel WeChat.

Cet article présentera en détail le contenu pertinent de Golang réutilisant http.request.body, et le partagera pour la référence et l'étude de tous. Je ne dirai pas grand-chose ci-dessous, jetons un coup d'œil à l'introduction détaillée<.>

Solution

La considération initiale est de transmettre directement http.request. Utilisez ReverseProxy pour transférer directement http.request du service A au service B. Cependant, WeChat implique des problèmes tels que la vérification, et il est très difficile de l'ajuster complètement. J'ai donc changé d'avis et prévu de publier le contenu de http.request.body directement sur le service B.

Mais http.request est lu de plus près. Lorsque nous lisons All http.request, nous ne pouvons pas relire les informations contenues dans http.request.

Comment puis-je copier et utiliser http.request.body ?

où c représente le contexte de http

 // 把request的内容读取出来
 var bodyBytes []byte
 if c.Request.Body != nil {
  bodyBytes, _ = ioutil.ReadAll(c.Request.Body)
 }
 // 把刚刚读出来的再写进去
 c.Request.Body = ioutil.NopCloser(bytes.NewBuffer(bodyBytes))
Copier après la connexion

1 Nous lisons d'abord le corps de http.request et l'enregistrons dans une variable .

2. Écrivez ensuite les données de la variable dans http.request en utilisant la méthode ioutil.NopCloser.

https://golang.org/pkg/io/ioutil/#NopCloser
NopCloser returns a ReadCloser with a no-op Close method wrapping the provided Reader r.
Copier après la connexion

NopCloser enveloppe Reader avec une méthode Close sans opération et renvoie une interface ReadCloser.

Nous pouvons donc utiliser à nouveau c.request pour le traitement.

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!

Étiquettes associées:
source:jb51.net
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal