Rumah > pembangunan bahagian belakang > Golang > 'json body tidak boleh dinyahkodkan: EOF' selepas cuba membaca badan permintaan

'json body tidak boleh dinyahkodkan: EOF' selepas cuba membaca badan permintaan

PHPz
Lepaskan: 2024-02-09 10:20:19
ke hadapan
649 orang telah melayarinya

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

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.

Kandungan soalan

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
}
Salin selepas log masuk

Kod saya:

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

// store the data...
fmt.Println(string(data))
Salin selepas log masuk

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.

Penyelesaian

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))
Salin selepas log masuk

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!

sumber:stackoverflow.com
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan