ホームページ  >  に質問  >  本文

ファイルと関連データを JSON 形式で RESTful WebService に投稿します

<p>私が開発しているアプリケーションでは、クライアントから JSON 形式でデータを送信する必要があるため、RESTful API を開発しています。アプリケーションの一部では、クライアントがファイル (通常は画像) とその画像に関する情報をアップロードする必要があります。 </p> <p>これを 1 つのリクエストで実現する方法を追跡するのに苦労しています。ファイルデータをBase64でJSON文字列にエンコードすることは可能ですか?サーバーに対して 2 つの POST リクエストを実行する必要がありますか?これを処理するには JSON を使用すべきではないでしょうか? </p> <p>また、バックエンドで Grails を使用しており、その情報が異なる場合は、ネイティブ モバイル クライアント (iPhone、Android など) からこれらのサービスにアクセスできます。 </p>
P粉056618053P粉056618053447日前573

全員に返信(2)返信します

  • P粉994092873

    P粉9940928732023-08-21 12:54:55

    multipart/form-data コンテンツ タイプを使用して、1 つのリクエストでファイルとデータを送信できます:

    http://www.faqs.org/rfcs/rfc2388.htmlより:

    各境界間の各セクションにファイル情報またはフィールド情報を含めることができます。ユーザーにデータとフォームの送信を要求する RESTful サービスを正常に実装できました。multipart/form-data は完全に機能します。このサービスは Java/Spring を使用して構築され、クライアントは C# を使用するため、残念ながら、サービスのセットアップ方法を説明する Grails の例はありません。この場合、各「form-data」セクションでパラメーター名とその値を指定する場所が提供されるため、JSON を使用する必要はありません。

    multipart/form-data を使用する利点は、HTTP によって定義されたヘッダーを使用するため、既存の HTTP ツールを使用してサービスを作成するという REST 哲学に従うことです。

    返事
    0
  • P粉145543872

    P粉1455438722023-08-21 11:24:16

    私もここで同様の質問をしました:

    REST Web サービスを使用してメタデータを含むファイルをアップロードするにはどうすればよいですか?

    基本的には 3 つのオプションがあります:

    1. Base64 はファイルをエンコードしますが、データ サイズが約 33% 増加し、サーバーとクライアントでのエンコード/デコード処理のオーバーヘッドが追加されます。
    2. まず、multipart/form-data の形式でファイルを送信し、ID をクライアントに返します。次に、クライアントはその ID を使用してメタデータを送信し、サーバーはファイルとメタデータを再度関連付けます。
    3. 最初にメタデータを送信し、ID をクライアントに返します。次に、クライアントはその ID を使用してファイルを送信し、サーバーはファイルとメタデータを再度関連付けます。

    返事
    0
  • キャンセル返事