首頁 >後端開發 >Golang >如何在 Go-chi HTTP 中間件處理程序中重複使用請求主體?

如何在 Go-chi HTTP 中間件處理程序中重複使用請求主體?

Barbara Streisand
Barbara Streisand原創
2024-12-20 13:32:09981瀏覽

How Can I Reuse Request Bodies in Go-chi HTTP Middleware Handlers?

確定HTTP 中間件處理程序中的請求正文可重用性

在這種情況下,當嘗試在Go 中的另一個方法中重複使用一個方法時會出現問題-chi HTTP 路由器。外部處理程序 Registration() 使用 ioutil.ReadAll(r.Body) 讀取請求正文,不留下任何資料可供內部處理程序 Create() 解析 JSON。

解決方案:恢復請求正文

要解決此問題,請執行以下操作修正:

以下是此程式碼解決問題的方法:

  • io.R eadAll(r.Body):讀取整個請求body.
  • io.NopCloser(bytes.NewReader(b)):透過從先前讀取的資料建立io.Reader 來恢復請求正文。
  • r.Body = io.NopCloser(...):用恢復後的r.Body 取代原來的r.Body body.

這樣,內部處理程序就可以從請求正文存取JSON 數據,而不會遇到「unexpected end of JSON input」錯誤。

以上是如何在 Go-chi HTTP 中間件處理程序中重複使用請求主體?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn