如何在 Go-Gin 中多次讀取請求體
驗證請求資料時,通常需要保留原始請求體進一步加工。但是,多次讀取請求體可能會導致問題。
問題:
以下程式碼讀取請求正文以執行驗證,但無法保留它以供後續函數呼叫:
func SignupValidator(c *gin.Context) { var bodyBytes []byte if c.Request.Body != nil { bodyBytes, _ = ioutil.ReadAll(c.Request.Body) } fmt.Println(string(bodyBytes)) // empty c.Next() }
解決方案:
至多次存取請求正文,請使用以下步驟:
func SignupValidator(c *gin.Context) { byteBody, _ := ioutil.ReadAll(c.Request.Body) c.Request.Body = ioutil.NopCloser(bytes.NewBuffer(byteBody)) fmt.Println(string(byteBody)) // contains the request body c.Next() }
現在,後續的函數呼叫可以存取身體資料沒有任何問題。
以上是如何在 Go-Gin 中多次讀取請求正文?的詳細內容。更多資訊請關注PHP中文網其他相關文章!