웹 애플리케이션에서 HTTP 요청을 처리할 때 요청 본문 캡처는 많은 작업에 필수적입니다. Go를 사용하면 이 작업을 수행하는 데 여러 가지 접근 방식이 있습니다.
다음 시나리오를 고려해보세요. POST 요청의 원시 JSON 본문을 검색하여 데이터베이스에 저장해야 합니다. 이렇게 하려면 본문의 원래 상태를 보존해야 합니다.
문제:
json.NewDecoder를 사용하여 본문을 직접 디코딩하거나 구조체에 바인딩하려고 하면 여러 번 읽을 수 없는 버퍼인 http.Request.Body의 특성으로 인해 빈 결과나 오류가 발생합니다.
해결책:
캡처하려면 원래 상태를 유지하면서 요청 본문을 삭제하는 경우 단계별 해결 방법은 다음과 같습니다.
예제 코드:
<code class="go">// Read the Body content var bodyBytes []byte if context.Request().Body != nil { bodyBytes, _ = ioutil.ReadAll(context.Request().Body) } // Restore the io.ReadCloser to its original state context.Request().Body = ioutil.NopCloser(bytes.NewBuffer(bodyBytes)) // Continue to use the Body, like Binding it to a struct: order := new(models.GeaOrder) error := context.Bind(order)</code>
출처:
위 내용은 내용을 잃지 않고 Go에서 요청 본문의 JSON을 읽는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!