Lecture du JSON à partir du corps de la requête dans Go
Dans Go, obtenir le corps JSON brut d'une requête POST peut être un défi pour les débutants. En effet, http.Response.Body met en mémoire tampon les réponses, empêchant les lectures ultérieures.
Cependant, il existe une solution de contournement pour capturer les corps JSON sans s'appuyer sur des structures de données prédéterminées. Pour y parvenir :
<code class="go">// Capture the body bytes bodyBytes, _ := ioutil.ReadAll(context.Request().Body) // Restore the response body context.Request().Body = ioutil.NopCloser(bytes.NewBuffer(bodyBytes)) // Decode the JSON var v interface{} err := json.NewDecoder(context.Request().Body).Decode(&v) if err != nil { return result, err }</code>
Cette approche préserve le corps d'origine pour les lectures ultérieures.
Pour démontrer davantage, voici un exemple utilisant le framework Echo :
<code class="go">func myHandler(c echo.Context) error { // Capture the body bytes bodyBytes, _ := ioutil.ReadAll(c.Request().Body) // Restore the response body c.Request().Body = ioutil.NopCloser(bytes.NewBuffer(bodyBytes)) // Decode the JSON var payload map[string]interface{} err := json.NewDecoder(c.Request().Body).Decode(&payload) if err != nil { return c.JSON(http.StatusBadRequest, "Invalid JSON provided") } // Use the decoded payload return c.JSON(http.StatusOK, payload) }</code>
Ceci La solution vous permet de capturer le corps JSON brut sans aucune structure imposée, ce qui la rend idéale pour les situations où vous devez gérer des données JSON arbitraires.
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!