고진: 요청 본문을 여러 번 읽기
고진에서는 요청 본문을 액세스해야 하는 경우 읽기가 까다로울 수 있습니다. 여러 번요. 미들웨어가 요청 본문을 수정하여 후속 액세스가 어려워지면 문제가 발생합니다.
다음 시나리오를 고려해보세요. 유효성 검사를 위해 본문을 읽는 유효성 검사 미들웨어가 있고 그 뒤에 수정되지 않은 본문이 필요한 다른 핸들러가 있습니다. 이 경우 미들웨어의 수정 사항은 원본 본문에 대한 후속 핸들러의 액세스를 방해합니다.
이 문제를 해결하려면 다음 접근 방식을 사용할 수 있습니다.
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 중국어 웹사이트의 기타 관련 기사를 참조하세요!