Gin 및 Go를 사용하여 REST API를 개발할 때 빈 요청 본문 문제가 발생하는 것은 드문 일이 아닙니다. 여기에서는 이 문제의 원인을 조사하고 해결 방법을 모색합니다.
fmt.Printf("%s"를 사용하여 요청 본문을 직접 인쇄하는 경우 , c.Request.Body), 실제 본문 값을 추출하지 않습니다. c.Request.Body는 읽기 가능하고 닫을 수 있는 데이터 스트림을 나타내는 인터페이스로 만드는 ReadCloser 유형입니다.
테스트 목적 , 요청 본문을 문자열로 읽어서 인쇄할 수 있습니다.
<code class="go">x, _ := ioutil.ReadAll(c.Request.Body) fmt.Printf("%s", string(x))</code>
참고: 이 방법은 학습 및 시연 목적으로만 사용됩니다. 이는 요청 본문을 구문 분석하기 위한 실용적인 솔루션이 아닙니다.
요청 본문에 액세스하는 더욱 강력한 방법은 Gin의 바인딩 기능을 사용하는 것입니다. 이를 통해 자동으로 구문 분석되어 요청 본문에서 채워질 데이터 구조를 지정할 수 있습니다.
<code class="go">type E struct { Events string } func events(c *gin.Context) { data := &E{} c.Bind(data) fmt.Println(data) c.JSON(http.StatusOK, c) }</code>
Bind() 메서드를 사용하여 Gin은 요청 본문의 데이터로 E 구조체를 채웁니다. , 요청 매개변수에 쉽게 액세스할 수 있습니다.
Gin의 바인딩 메커니즘을 사용하기 전에 첫 번째 방법을 사용하여 요청 본문을 직접 읽지 않는 것이 중요합니다. 이로 인해 충돌과 잘못된 구문 분석이 발생할 수 있습니다.
위 내용은 Gin/Go API에서 요청 본문이 비어 있는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!