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() }
Solution :
Pour accéder au corps de la requête multiple fois, suivez les étapes suivantes :
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() }
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!