고진에서 요청 본문을 여러 번 읽는 방법
요청 데이터를 검증할 때 원본 요청 본문을 유지해야 하는 경우가 많습니다. 추가 처리. 그러나 본문을 여러 번 읽으면 문제가 발생할 수 있습니다.
문제:
다음 코드는 요청 본문을 읽어 유효성 검사를 수행하지만 후속 기능을 위해 요청 본문을 유지하지 못합니다. 호출:
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 중국어 웹사이트의 기타 관련 기사를 참조하세요!