Dalam pembangunan PHP, kita sering menghadapi pelbagai masalah dan ralat. Salah satu isu biasa ialah ralat "json body tidak boleh dinyahkodkan: EOF" semasa cuba membaca badan permintaan. Mesej ralat ini bermakna bahawa akhir fail yang tidak dijangka telah ditemui semasa menyahkod badan permintaan JSON. Biasanya, isu ini boleh diselesaikan dengan beberapa penyahpepijatan dan penyelesaian masalah yang mudah. Dalam artikel ini, kami akan membincangkan kemungkinan punca isu ini dan menyediakan beberapa penyelesaian untuk membantu anda menyelesaikan ralat ini.
Saya menulis perisian tengah logger yang menyimpan maklumat permintaan graphql masuk. Masalahnya ialah jika saya cuba membaca badan permintaan, saya mendapat 400 permintaan buruk berikut:
{ "errors": [ { "message": "json body could not be decoded: eof" } ], "data": null }
Kod saya:
clonedReq := r.Clone(ctx) data, _ := io.ReadAll(clonedReq.Body) // store the data... fmt.Println(string(data))
Data dipaparkan, tetapi kemudian saya mendapat ralat eof. Jika saya mengulas bahagian ini, permintaan akan dibalas tanpa sebarang masalah.
Masalah tetap sama ada anda menggunakan clone
atau tidak untuk meminta salinan yang mendalam.
Middleware membaca badan permintaan ke eof. Pengendali terjumpa eof. Kandungan badan permintaan tidak diklon dalam klon().
Untuk membetulkan kod, pulihkan badan permintaan dalam perisian tengah:
data, _ := io.ReadAll(r.Body) r.Body = io.NopCloser(bytes.NewReader(data))
Atas ialah kandungan terperinci 'json body tidak boleh dinyahkodkan: EOF' selepas cuba membaca badan permintaan. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!