Maison > développement back-end > Golang > le corps du texte

'Le corps json ne peut pas être décodé : EOF' après avoir essayé de lire le corps de la requête

PHPz
Libérer: 2024-02-09 10:20:19
avant
589 Les gens l'ont consulté

尝试读取请求正文后出现“json 正文无法解码:EOF”

Dans le développement PHP, nous rencontrons souvent divers problèmes et erreurs. L'un des problèmes courants est l'erreur « Le corps json ne peut pas être décodé : EOF » lors de la tentative de lecture du corps de la requête. Ce message d'erreur signifie qu'une fin de fichier inattendue a été rencontrée lors du décodage du corps de la requête JSON. En règle générale, ce problème peut être résolu par un simple débogage et dépannage. Dans cet article, nous discuterons des causes possibles de ce problème et proposerons quelques solutions pour vous aider à résoudre cette erreur.

Contenu de la question

J'ai écrit un middleware d'enregistrement qui stocke les informations de requête graphql entrantes. Le problème est que si j'essaie de lire le corps de la requête, j'obtiens les 400 mauvaises requêtes suivantes :

{
    "errors": [
        {
            "message": "json body could not be decoded: eof"
        }
    ],
    "data": null
}
Copier après la connexion

Mon code :

clonedReq := r.Clone(ctx)
data, _ := io.ReadAll(clonedReq.Body)

// store the data...
fmt.Println(string(data))
Copier après la connexion

Les données sont affichées, mais j'obtiens ensuite une erreur eof. Si je commente cette partie, la demande reçoit une réponse sans aucun problème.

Le problème reste de savoir si vous utilisez ou non clone pour demander une copie complète.

Solution

Le middleware lit le corps de la requête dans eof. Le gestionnaire a rencontré eof. Le contenu du corps de la requête n'est pas cloné dans clone().

Pour corriger le code, restaurez le corps de la requête dans le middleware :

data, _ := io.ReadAll(r.Body)
  r.Body = io.NopCloser(bytes.NewReader(data))
Copier après la connexion

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:stackoverflow.com
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
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!