„JSON-Text kann nicht dekodiert werden: EOF' nach dem Versuch, den Anforderungstext zu lesen

PHPz
Freigeben: 2024-02-09 10:20:19
nach vorne
590 Leute haben es durchsucht

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

Bei der PHP-Entwicklung stoßen wir häufig auf verschiedene Probleme und Fehler. Eines der häufigsten Probleme ist der Fehler „JSON-Body kann nicht dekodiert werden: EOF“, wenn versucht wird, den Anfragetext zu lesen. Diese Fehlermeldung bedeutet, dass beim Dekodieren des JSON-Anfragetexts ein unerwartetes Dateiende aufgetreten ist. Normalerweise kann dieses Problem durch einfache Fehlerbehebung und Fehlerbehebung behoben werden. In diesem Artikel besprechen wir die möglichen Ursachen dieses Problems und bieten einige Lösungen an, die Ihnen bei der Behebung dieses Fehlers helfen.

Frageninhalt

Ich habe eine Logger-Middleware geschrieben, die eingehende Graphql-Anforderungsinformationen speichert. Das Problem ist, dass ich, wenn ich versuche, den Anfragetext zu lesen, die folgende 400 fehlerhafte Anfrage erhalte:

{
    "errors": [
        {
            "message": "json body could not be decoded: eof"
        }
    ],
    "data": null
}
Nach dem Login kopieren

Mein Code:

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

// store the data...
fmt.Println(string(data))
Nach dem Login kopieren

Die Daten werden angezeigt, aber dann erhalte ich einen EOF-Fehler. Wenn ich diesen Teil auskommentiere, wird die Anfrage ohne Probleme beantwortet.

Das Problem bleibt bestehen, unabhängig davon, ob Sie clone verwenden, um eine tiefe Kopie anzufordern.

Lösung

Middleware liest den Anforderungstext an eof. Handler ist auf EOF gestoßen. Der Inhalt des Anfragetextes wird in clone() nicht geklont.

Um den Code zu reparieren, stellen Sie den Anforderungstext in der Middleware wieder her:

data, _ := io.ReadAll(r.Body)
  r.Body = io.NopCloser(bytes.NewReader(data))
Nach dem Login kopieren

Das obige ist der detaillierte Inhalt von„JSON-Text kann nicht dekodiert werden: EOF' nach dem Versuch, den Anforderungstext zu lesen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:stackoverflow.com
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!