Go-Gin:多次讀取請求正文
在Go-Gin 中,如果您需要訪問,讀取請求正文可能會很棘手多次。當中間件修改請求正文時,就會出現問題,導致後續存取變得困難。
考慮以下場景:您有一個驗證中間件讀取請求正文進行驗證,後面跟著另一個需要未修改正文的處理程序。在這種情況下,中間件的修改會幹擾後續處理程序對原始正文的存取。
要解決此問題,可以使用以下方法:
bodyBytes, _ := ioutil.ReadAll(c.Request.Body)
if err := c.ShouldBindJSON(&user); err != nil { // Validation logic }
c.Request.Body = ioutil.NopCloser(bytes.NewBuffer(ByteBody))
要在提供的程式碼中實現此解決方案,請將中間件中的以下行替換:
// var bodyBytes []byte // if c.Request.Body != nil { // bodyBytes, _ = ioutil.ReadAll(c.Request.Body) // }
替換為:
bodyBytes, _ := ioutil.ReadAll(c.Request.Body) c.Request.Body = ioutil.NopCloser(bytes.NewBuffer(bodyBytes))
以上是如何多次讀取 Go-Gin 請求正文?的詳細內容。更多資訊請關注PHP中文網其他相關文章!