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.
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 }
Mein Code:
clonedReq := r.Clone(ctx) data, _ := io.ReadAll(clonedReq.Body) // store the data... fmt.Println(string(data))
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.
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))
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!