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

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

PHPz
PHPzke hadapan
2024-02-09 10:20:19560semak imbas

尝试读取请求正文后出现“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
}

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.

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))

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!

Kenyataan:
Artikel ini dikembalikan pada:stackoverflow.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam