Capturer le JSON à partir du corps de la requête dans Go
Lors du développement d'API, il est souvent nécessaire de capturer le corps JSON brut d'une requête POST. Dans Node.js, cette tâche est simple avec la propriété request.payload. Cependant, dans Go, l'approche peut être moins évidente au départ.
Le défi
Le corps JSON est stocké dans le type io.ReadCloser, ce qui ne permet pas plusieurs lectures. Tenter de le décoder directement à l'aide de json.NewDecoder ou de context.Bind entraînera généralement des messages vides ou d'erreur en raison de la nature tampon du corps.
La solution de contournement : restaurer le corps
Heureusement, il existe une solution de contournement qui consiste à capturer le contenu du corps, à restaurer son état d'origine, puis à effectuer le processus de décodage. Ceci est réalisé en suivant les étapes suivantes :
Démonstration de code
Voici un exemple d'implémentation :
<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>
En suivant ces étapes, vous pouvez capturer et décoder le corps JSON selon vos besoins dans votre application Go.
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!