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

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

PHPz
PHPz転載
2024-02-09 09:24:181247ブラウズ

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 までご連絡ください。