首頁 > 後端開發 > Golang > 主體

嘗試讀取請求正文後出現'json 正文無法解碼:EOF”

PHPz
發布: 2024-02-09 10:20:19
轉載
588 人瀏覽過

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

在PHP開發中,我們經常會遇到各種問題和錯誤。其中一個常見的問題是在嘗試讀取請求正文時出現「json 正文無法解碼:EOF」的錯誤。這個錯誤提示意味著在解碼JSON請求正文時遇到了意外的檔案結尾。通常情況下,這個問題可以透過一些簡單的調試和排查來解決。在本文中,我們將討論這個問題可能的原因,並提供一些解決方法來幫助您解決這個錯誤。

問題內容

我寫了一個記錄器中間件,用於儲存傳入的 graphql 請求資訊。問題是,如果我嘗試讀取請求正文,我會收到以下 400 bad request:

{
    "errors": [
        {
            "message": "json body could not be decoded: eof"
        }
    ],
    "data": null
}
登入後複製

我的程式碼:

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

// store the data...
fmt.Println(string(data))
登入後複製

數據已顯示,但隨後我遇到 eof 錯誤。如果我註解掉這部分,則請求將得到回應,沒有任何問題。

無論是否使用 clone 請求深層副本,問題仍然存在。

解決方法

中間件讀取請求體至eof。處理程序遇到 eof。 clone() 中不會克隆請求正文的內容。

要修正程式碼,請在中間件中恢復請求正文:

data, _ := io.ReadAll(r.Body)
  r.Body = io.NopCloser(bytes.NewReader(data))
登入後複製

以上是嘗試讀取請求正文後出現'json 正文無法解碼:EOF”的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:stackoverflow.com
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!