環境
私のアプリケーション (war) には、JavaScript フロントエンドと Java REST サービスがあります。
アップロードするファイルはフロントエンドで生成されますが、ユーザーの操作によって直接生成されるわけではありません。これは、ユーザーが自分でファイルをアップロードするユース ケースではありません。そのため、JavaScript コードからアップロードを開始する必要があります。
バイナリ データをアップロードするときに、バイナリ データに関するメタデータ (アプリケーションの他の部分によって生成されたもの) を送信できる必要があります。そのため、ファイルをアップロードするだけでなく、何らかのプロトコルが必要です。
質問
私が判断できなかったのは、主に使用されているプロトコルに関して、ファイルをアップロードするためのベストプラクティスが何であるかです.
私は次のプロトコルに出くわしました:
- json
- xml
- proctol-buffers ( protobuf.js経由)
ただし、インターネットにはいつものようにさまざまな情報があり、一貫した全体像を把握できていません。
- 信頼性に関しては
multipart/mixed
、純粋なタイプではなく、タイプを使用してデータを転送する方が良いとインターネットは言っているようですapplication/octet-stream
。 - json はネイティブではバイナリ データをサポートしていません。また、どうやら Base64 には高い処理オーバーヘッドがあります。
- これは JavaScript フロントエンドであるため、json が推奨されます。
- もちろん、protobuf.js を使用することもできますが、最先端の技術よりも最先端の技術を使用したいと考えています。
私の優先事項は次のとおりです。
- 1 ~ 10 メガバイトのファイルの信頼性の高いデータ転送。
- 高性能で効率的なデータ転送。
- 読み取り可能なコード/アーキテクチャ
つまり、バックエンドで Java REST サービスを使用している場合、上記の 3 つの形式のうちどれがこれらの要件に最も適しているのでしょうか?
(サーブレットではなく、Java REST サービスを使用してファイルをアップロードすることが最大の速度低下になる場合、それも良い答えです!)
編集:コメントで尋ねられた情報を追加しました-ありがとう!