Go-Gin でリクエスト本文を複数回読み取る方法
リクエスト データを検証するとき、多くの場合、元のリクエスト本文を保持しておく必要があります。さらなる処理。ただし、本文を複数回読み取ると、問題が発生する可能性があります。
問題:
次のコードは、検証を実行するためにリクエスト本文を読み取りますが、後続の機能のためにそれを保持できません。呼び出し:
func SignupValidator(c *gin.Context) { var bodyBytes []byte if c.Request.Body != nil { bodyBytes, _ = ioutil.ReadAll(c.Request.Body) } fmt.Println(string(bodyBytes)) // empty c.Next() }
解決策:
リクエスト本文に複数回アクセスするには、次の手順を使用します:
func SignupValidator(c *gin.Context) { byteBody, _ := ioutil.ReadAll(c.Request.Body) c.Request.Body = ioutil.NopCloser(bytes.NewBuffer(byteBody)) fmt.Println(string(byteBody)) // contains the request body c.Next() }
これで、後続の関数呼び出しは問題なく本文データにアクセスできるようになります。
以上がGo-Gin でリクエスト本文を複数回読み取る方法は?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。