方式1:multipart/form-dataを使う
ファイルアップロードの基本、multipart/form-dataをAPIリクエストに使う方式です。- 単純なAPIならコマンドでも比較的ポンと気軽に送信できるのが魅力
- JSONベースのシステムから送信するときにリクエストを別途組み立てないといけないのが面倒
こういうときに採用すると良さそう
- テキストデータが少なくファイルのやり取りがメインのAPIをつくりたいとき
- コマンドベースで使えるようなシンプルなAPIをつくりたいとき
方式2:JSON+Base64エンコードを使う
application/jsonをAPIリクエストに使う方式です。ファイル自体のデータもBase64エンコードしてJSONデータの中に含めてしまいます。- JSONベースのシステムからAPIを使いやすいのが魅力
- ファイルのエンコード・デコードの処理時間が余分にかかるのと、Base64エンコードすることでファイルサイズが増えるので通信時間が増える
こういうときに採用すると良さそう
- ファイルサイズが小さくテキストデータのやり取りがメインのAPIをつくりたいとき
- リクエストもレスポンスもすべてJSONでやり取りできるAPIをつくりたいとき
方式3:multipart/form-dataとJSONを使い分ける
開発するAPI群のうち、ファイルアップロード用APIだけmultipart/form-dataを使い、その他のAPIにはapplication/jsonを使う方式です。ファイルアップロード用APIでファイルを特定するためのキーを発行し、その他のAPIではそのキーを使ってファイルを指定します。- JSONベースのシステムから使いやすく、アップロードしたファイルを他のAPIで何度も使いまわしやすいのが魅力
- ファイルアップロードが個別のAPIなため、APIのリクエスト回数が増える
こういうときに採用すると良さそう
- サイズの大きいファイルと複雑なテキストデータのどちらも取り扱うAPIをつくりたいとき
- アップロードしたファイルを何度も使いまわせるAPIをつくりたいとき
以上、どちらかというと私の備忘録な投稿でした。