Lors du traitement des requêtes HTTP dans une application Web, la capture du corps de la requête est essentielle pour de nombreuses opérations. Avec Go, il existe plusieurs approches pour accomplir cette tâche.
Considérez le scénario suivant : vous devez récupérer le corps JSON brut d'une requête POST et le stocker dans une base de données. Pour ce faire, l'état d'origine du corps doit être préservé.
Le problème :
Tenter de décoder directement le corps à l'aide de json.NewDecoder ou de le lier à une structure peut conduire à des résultats vides ou à des erreurs en raison de la nature du http.Request.Body en tant que tampon qui ne peut pas être lu plusieurs fois.
La solution :
Pour capturer le corps de la requête tout en conservant son état d'origine, voici une solution étape par étape :
Exemple de code :
<code class="go">// Read the Body content var bodyBytes []byte if context.Request().Body != nil { bodyBytes, _ = ioutil.ReadAll(context.Request().Body) } // Restore the io.ReadCloser to its original state context.Request().Body = ioutil.NopCloser(bytes.NewBuffer(bodyBytes)) // Continue to use the Body, like Binding it to a struct: order := new(models.GeaOrder) error := context.Bind(order)</code>
Sources :
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!