Maison > développement back-end > Golang > Comment lire un corps de requête plusieurs fois dans Go-Gin ?

Comment lire un corps de requête plusieurs fois dans Go-Gin ?

DDD
Libérer: 2024-12-26 08:26:11
original
633 Les gens l'ont consulté

How to Read a Request Body Multiple Times in Go-Gin?

Comment lire le corps de la demande plusieurs fois dans Go-Gin

Lors de la validation des données de la demande, il est souvent nécessaire de conserver le corps de la demande d'origine pour traitement ultérieur. Cependant, lire le corps plusieurs fois peut entraîner des problèmes.

Problème :

Le code suivant lit le corps de la requête pour effectuer la validation, mais ne parvient pas à le conserver pour les appels de fonction ultérieurs. :

func SignupValidator(c *gin.Context) {
    var bodyBytes []byte
    if c.Request.Body != nil {
        bodyBytes, _ = ioutil.ReadAll(c.Request.Body)
    }
    fmt.Println(string(bodyBytes)) // empty
    c.Next()
}
Copier après la connexion

Solution :

Pour accéder au corps de la requête multiple fois, suivez les étapes suivantes :

  1. Lisez le corps de la requête une fois et stockez-le dans une variable.
  2. Créez un nouveau tampon avec les mêmes octets de corps.
  3. Définissez le corps de la requête sur le tampon nouvellement créé.
func SignupValidator(c *gin.Context) {
    byteBody, _ := ioutil.ReadAll(c.Request.Body)
    c.Request.Body = ioutil.NopCloser(bytes.NewBuffer(byteBody))

    fmt.Println(string(byteBody)) // contains the request body

    c.Next()
}
Copier après la connexion

Désormais, les appels de fonction suivants peuvent accéder aux données du corps sans aucun problème. problèmes.

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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal