ホームページ >バックエンド開発 >Golang >Golang gin は JSON データと画像を受け取ります

Golang gin は JSON データと画像を受け取ります

PHPz
PHPz転載
2024-02-09 13:09:17616ブラウズ

Golang gin接收json数据和图像

php エディタ Baicao は、Golang gin フレームワークで JSON データと画像を受け取る方法を紹介します。開発プロセスでは、フロントエンドから渡された JSON データや画像ファイルを処理する必要がよくあります。 Golang の gin フレームワークは、このデータを受信して​​処理するためのシンプルで使いやすいメソッドを提供します。この記事の導入部を通じて、gin フレームワークの構造体を使用して JSON データを受信する方法と、アップロードされた画像ファイルを処理する方法を学びます。一緒に探検しましょう!

質問の内容

リクエスト ハンドラーのコードがあります:

リーリー

このハンドラーの単体テストを行いました:

リーリー

テスト中に次のエラーが発生しました: エラー #01: 数値リテラル

に無効な文字 '-' があります

これはリクエスト本文です (log.print(req) を使用して出力します):

リーリー

まず、json データとして文字列だけを取得し、それをバイトに変換します。エラーが発生したとき、json.marshalを使用してjsonデータを変換しましたが、成功しませんでした。 c.bindを使用してjsonデータを解析し、c.formfileを使用して指定された画像を解析したいのですが、これは可能ですか?

更新します。最初にアバターを取得し、次にバインド構造を通じて JSON を取得するコードを置き換えました。今、私はeofエラーを抱えています。

解決策

tl;dr

json データと画像ファイルを同時に受信する構造を定義できます (フィールド ラベルに注意してください):

リーリー

gin は、multipart/form-data 内の他のコンテンツ タイプを自動的に解析できますか?

たとえば、xml または yaml

現在の gin (@1.9.0) は、multipart/form-dataxml または yaml を自動的に解析しません。 json 幸いなことに、ターゲット フィールドが構造体またはマップである場合、gin はたまたま json.unmarshal を使用してフォーム フィールド値を解析します。 binding.setwithpropertypeを参照してください。

次のように自分で解析できます (updaterequest.event はフォーム内の文字列値です):

リーリー

(application/xml リクエストの yaml または application/x-yaml リクエストの xml と混同しないでくださいこれは、xml コンテンツまたは yaml コンテンツが multipart/form-data リクエスト内にある場合にのみ必要です) .

###他の###

    c.bindjson
  1. は、リクエスト本文が有効な json で始まると想定されているため、multipart/form-data からの json の読み取りには使用できません。ただし、--30b24345d... のような境界から始まります。そのため、エラー メッセージ 数値リテラル '-' が無効です というエラー メッセージが表示されて失敗します。 c.formfile("avatar")
  2. の後の
  3. c.bindjson の呼び出しは機能しません。c.formfile を呼び出すと、リクエスト本文全体が次のようになります。読む。 c.bindjson の後には読み取れるものはありません。そのため、eof エラーが表示されます。 単一の実行可能ファイルでのデモ
これは完全なデモです。

go test を使用して ./... -v -count 1

:

を実行します リーリー ###読んでくれてありがとう!

以上がGolang gin は JSON データと画像を受け取りますの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はstackoverflow.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。