Go-Gin 미들웨어에서 요청 본문을 여러 번 가져오는 경우
웹 프레임워크인 Go-Gin에서 개발자는 다음과 같은 상황에 직면할 수 있습니다. 요청 본문을 여러 번 읽어야 합니다. 이는 본문 데이터가 유효성 검사 목적으로 사용되고 나중에 후속 함수에 전달될 때 필요합니다.
이 문제를 해결하는 한 가지 접근 방식은 유효성 검사를 수행하기 전에 본문을 변수로 읽어온 다음 본문을 원래의 상태로 복원하는 것입니다. 다음 함수를 계속하기 전에 원래 상태:
func SignupValidator(c *gin.Context) { var bodyBytes []byte var bodyBytesCopy []byte if c.Request.Body != nil { bodyBytes, _ = ioutil.ReadAll(c.Request.Body) } copy(bodyBytesCopy, bodyBytes) // Save body for later use var user entity.User if err := c.ShouldBindJSON(&user); err != nil { // Validation code c.Abort() return } c.Request.Body = ioutil.NopCloser(bytes.NewBuffer(bodyBytesCopy)) // Restore original body c.Next() }
이 접근 방식은 ioutil.ReadAll 함수를 사용하여 원본 스트림의 본문을 읽은 다음 유효성 검사에 사용할 복사본을 생성합니다. 그런 다음 후속 기능이 액세스할 수 있도록 원래 본문이 복원됩니다.
위 내용은 Go-Gin 미들웨어에서 요청 본문을 여러 번 읽으려면 어떻게 해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!