アプリケーションで RESTful API を開発しており、クライアントがデータを JSON として送信できるようにしたいと考えています。このアプリケーションの一部では、クライアントがファイル (通常は画像) と画像に関する情報をアップロードする必要があります。
単一のリクエストでこれがどのように発生するのかを追跡するのは困難です。ファイル データを Base64 で JSON 文字列に変換することは可能ですか? サーバーに 2 回投稿する必要がありますか? この場合、JSON を使用しないほうがよいでしょうか?
ちなみに、バックエンドでは Grails を使用しており、これらのサービスはネイティブ モバイル クライアント (iPhone、Android など) からアクセスされます (これにより何か違いが生じる場合もあります)。
ベストアンサー1
ここで同様の質問をしました:
REST Web サービスを使用してメタデータを含むファイルをアップロードするにはどうすればよいですか?
基本的に選択肢は 3 つあります。
- ファイルを Base64 でエンコードすると、データ サイズが約 33% 増加し、エンコード/デコードのためにサーバーとクライアントの両方で処理オーバーヘッドが追加されます。
- まず POST でファイルを送信し
multipart/form-data
、クライアントに ID を返します。次にクライアントは ID とともにメタデータを送信し、サーバーはファイルとメタデータを再度関連付けます。 - 最初にメタデータを送信し、クライアントに ID を返します。次に、クライアントは ID を含むファイルを送信し、サーバーはファイルとメタデータを再度関連付けます。