HTTP リクエストの処理は、Web 開発を行うときに非常に一般的なタスクです。 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() }
Solution
これは、ShouldBindBodyWith を使用して本文を 2 回読み取る例です。確認してください:
リーリー
出力:
リーリー
以上がGo-Gin はリクエスト本文を複数回読み取りますの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。