在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中文網其他相關文章!