web-dev-qa-db-ja.com

バイナリデータをHTTP REST APIサービスに転送する良い方法は何ですか?

HTTP REST APIを拡張して、クライアントが画像をアップロードできるようにします(この質問の目的のため、バイナリデータを想定しています)。バイナリデータをアップロードできるようにする良い方法ですか?base64でエンコードされたフォームを要求するのでしょうか?Webサーバーが処理するにはURLが長すぎますか?

提案/ベストプラクティスはありますか?

44
erotsppa

バイナリデータをそのままPOST本文で送信しますが、適切なContent-Typeヘッダー(例:image/jpeg)を使用します-これは最も「RESTful」な方法だと思います。

(一般に、RESTサービスを設計するときの経験則として、base64のような不要で複雑なものを上に重ねようとするのではなく、HTTPプロトコルをそのまま使用すると、 HTTPは究極のRESTfulプロトコルであり、Content-Typesは「Representational State Transfer」で異なる「Representations」を許可します)

留意すべきもう1つの可能性は、実際の物理ファイルの代わりに画像URLを受け入れることです。これにより、スタンドアロンアプリの場合は難しくなります。ユーザーのドライブから画像を読み取りますが、別のサービスから画像がURLとして返される可能性のあるマッシュアップタイプのアプリの場合は簡単にします。

もちろん、両方のオプションを許可できます。

42