>  기사  >  백엔드 개발  >  Go-Gin은 요청 본문을 여러 번 읽습니다.

Go-Gin은 요청 본문을 여러 번 읽습니다.

PHPz
PHPz앞으로
2024-02-09 09:24:181247검색

Go-Gin 多次读取请求正文

HTTP 요청 처리는 웹 개발을 할 때 매우 일반적인 작업입니다. Go 언어 개발자에게 Gin 프레임워크는 매우 인기 있는 선택입니다. 그러나 특정 처리를 수행하기 위해 요청 본문을 여러 번 읽어야 하는 경우도 있습니다. 그렇다면 Go-Gin에서 요청 본문을 여러 번 읽는 방법은 무엇입니까? 이 기사에서 PHP 편집자인 Xiaoxin은 개발자가 이러한 요구에 더 잘 대처할 수 있도록 이 문제에 대한 솔루션을 자세히 소개합니다.

질문 내용

데이터 검증을 수행한 후 데이터의 컨텍스트를 복원하려고 합니다. 다음 기능에서 필요에 따라 계속 이동하려면 데이터가 필요합니다.

저는 golang을 처음 접했고 아래 코드를 사용하면 됩니다. 어떤 도움과 더 나은 방법이라도 대단히 감사하겠습니다.

미리 감사드립니다.

인증 미들웨어

으아악

경로

func SignupValidator(c *gin.Context) {
    // Read the Body content
    // var bodyBytes []byte
    // if c.Request.Body != nil {
    //  bodyBytes, _ = ioutil.ReadAll(c.Request.Body)
    // }
    var user entity.User
    if err := c.ShouldBindJSON(&user); err != nil {
         validate := validator.New()
         if err := validate.Struct(&user); err != nil {
              c.JSON(http.StatusBadRequest, gin.H{
                 "error": err.Error(),
          })
          c.Abort()
          return
        }
        // c.Request.Body = ioutil.NopCloser(bytes.NewBuffer(bodyBytes))
    }
    // Read the Body content
    var bodyBytes []byte
    if c.Request.Body != nil {
        bodyBytes, _ = ioutil.ReadAll(c.Request.Body)
    }
    fmt.Println(string(bodyBytes)) // this empty
    c.Next()

}

해결 방법

다음은 ShouldBindBodyWith을 사용하여 본문을 두 번 읽는 예입니다. 확인해 보세요.

으아악

출력:

으아악

위 내용은 Go-Gin은 요청 본문을 여러 번 읽습니다.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 stackoverflow.com에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제