ホームページ > バックエンド開発 > Golang > Go-Gin はリクエスト本文を複数回読み取ります

Go-Gin はリクエスト本文を複数回読み取ります

PHPz
リリース: 2024-02-09 09:24:18
転載
1304 人が閲覧しました

Go-Gin 多次读取请求正文

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 サイトの他の関連記事を参照してください。

関連ラベル:
ソース:stackoverflow.com
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート