Go-Gin: リクエスト本文を複数回読み取る
Go-Gin では、アクセスする必要がある場合、リクエスト本文を読み取るのが難しい場合があります。それを何度も。この問題は、ミドルウェアがリクエストの本文を変更し、その後のアクセスが困難になる場合に発生します。
次のシナリオを考えてみましょう。検証のために本文を読み取る検証ミドルウェアがあり、その後に未変更の本文を必要とする別のハンドラーが続きます。この場合、ミドルウェアの変更により、後続のハンドラーによる元の本文へのアクセスが妨げられます。
この問題を解決するには、次のアプローチを使用できます。
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 中国語 Web サイトの他の関連記事を参照してください。