4
REST API-ファイル(画像)処理-ベストプラクティス
JSONを受け入れて応答するREST APIを備えたサーバーを開発しています。問題は、クライアントからサーバーに画像をアップロードする必要がある場合です。 注:また、エンティティ(ユーザー)が複数のファイル(carPhoto、licensePhoto)を持ち、他のプロパティ(name、email ...)を持つことができるユースケースについても話しますが、新しいユーザーを作成すると、これらの画像は送信されません。登録プロセスの後に追加されます。 私が知っている解決策ですが、それぞれにいくつかの欠陥があります 1. JSONの代わりにmultipart / form-dataを使用する good:POSTおよびPUTリクエストは可能な限りRESTfulであり、ファイルとともにテキスト入力を含めることができます。 短所:JSONではなく、テストやデバッグなどがmultipart / form-dataに比べてはるかに簡単になりました。 2.個別のファイルの更新を許可する 新しいユーザーを作成するためのPOSTリクエストは画像を追加することを許可していません(これは、私が最初に言ったユースケースでは問題ありません)。 good:すべて(ファイルのアップロード自体を除く)はJSONのままなので、テストとデバッグが簡単です(長さを気にせずに完全なJSONリクエストをログに記録できます) 短所:直感的ではありません。エンティティのすべての変数を一度にPOSTまたはPUTすることはできません。また、このアドレス/users/4/carPhotoはコレクションと見なすことができます(REST APIの標準的な使用例は次のようになります/users/4/shipments)。通常、エンティティの各変数、たとえばusers / 4 / nameをGET / PUTすることはできません(したくありません)。users / 4でGETを使用して名前を取得し、PUTを使用して名前を変更できます。IDの後に何かがある場合、それは通常、users / 4 / reviewsのような別のコレクションです。 3. Base64を使用する JSONとして送信しますが、Base64でファイルをエンコードします。 good:最初のソリューションと同じで、できるだけRESTfulなサービスです。 短所:繰り返しになりますが、テストとデバッグははるかに悪く(ボディにはメガバイトのデータが含まれる可能性があります)、サイズが増加し、クライアントとサーバーの両方で処理時間が長くなります。 私は本当にソリューション番号を使用したいと思います。2、しかし、それはその短所を持っています...誰でも私に「何が最善」の解決策のより良い洞察を与えることができますか? 私の目標は、できるだけ多くの標準を組み込んだRESTfulサービスを提供することですが、できるだけシンプルにしたいと考えています。