ホームページ  >  記事  >  バックエンド開発  >  GoのGinを使用してマルチパート/フォームデータリクエストのJSONと画像データを処理する方法は?

GoのGinを使用してマルチパート/フォームデータリクエストのJSONと画像データを処理する方法は?

Patricia Arquette
Patricia Arquetteオリジナル
2024-11-21 01:56:15909ブラウズ

How to Handle JSON and Image Data in Multipart/Form-Data Requests with Gin in Go?

Gin in Go での JSON と画像データの受信

概要

この記事では、Go で HTTP リクエスト ハンドラーを設計する方法を検討します。 Jin フレームワークを使用して、multipart/form-data リクエストの一部として送信される JSON データと画像ファイルの両方を受け入れます。

リクエスト ハンドラーのセットアップ

まず、リクエスト ハンドラーを定義します。 、UpdateProfile()、予想されるリクエスト本文の形式を定義する構造体:

type request struct {
    Username    string `json:"username" binding:"required,min=4,max=20"`
    Description string `json:"description" binding:"required,max=100"`
}

func (h *Handlers) UpdateProfile() gin.HandlerFunc {
    return func(c *gin.Context) {
        // ...
    }
}

c.BindJSON() による JSON の解析

リクエスト本文から JSON データを抽出するには、次を使用します。 c.BindJSON()、リクエスト構造体へのポインタを提供します:

var updateRequest request

if err := c.BindJSON(&updateRequest); err != nil {
    // Handle JSON binding errors
    ...
}

c.FormFile() による画像の解析

画像ファイルを解析するには、c.FormFile() を利用します。 :

avatar, err := c.FormFile("avatar")
if err != nil {
    // Handle file parsing errors
    ...
}

エラー: 「数値リテラルに無効な文字 '-'」

「数値リテラルに無効な文字 '-'」のようなエラーが発生した場合は、次の原因が考えられます。リクエスト本文に multipart/form-data の境界も含まれているときに、JSON を解析しようとしています。代わりに、 binding.FormMultipart モードを明示的に指定できます。

// c.ShouldBind will choose binding.FormMultipart based on the Content-Type header.
// We call c.ShouldBindWith to make it explicitly.
if err := c.ShouldBindWith(&updateRequest, binding.FormMultipart); err != nil {
    // Handle binding errors
    ...
}

multipart/form-data からの XML または YAML の解析

multipart/form-data で JSON と一緒に XML または YAML が期待される場合

var event struct {
    At     time.Time `xml:"time" binding:"required"`
    Player string    `xml:"player" binding:"required"`
    Action string    `xml:"action" binding:"required"`
}

if err := binding.XML.BindBody([]byte(updateRequest.Event), &event); err != nil {
    // Handle binding errors
    ...
}

結論

ここで説明した手法に従うことで、単一のマルチパート/フォーム内で JSON データとアップロードされた画像の両方を効果的に解析できます。 -Gin を使用した Go でのデータ リクエスト。潜在的なバインディング エラーを適切に処理することを忘れないでください。

以上がGoのGinを使用してマルチパート/フォームデータリクエストのJSONと画像データを処理する方法は?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。