現在、この URL を公開している REST Web サービスがあります。
ここで、ユーザーはPOST
次の JSON を使用できます。
{
"Name": "Test",
"Latitude": 12.59817,
"Longitude": 52.12873
}
新しいメディアメタデータを作成します。
今、メディア メタデータと同時にファイルをアップロードする機能が必要です。これを行う最善の方法は何でしょうか? という新しいプロパティを導入してfile
ファイルを base64 でエンコードすることもできますが、もっと良い方法があるのではないかと考えていました。
HTML フォームが送信するものを使用する方法もありますmultipart/form-data
が、私は REST Web サービスを使用しており、可能な限り JSON の使用にこだわりたいと思っています。
ベストアンサー1
2 段階のアプローチが合理的な解決策であるという Greg の意見には同意しますが、私は逆のやり方で実行します。私なら次のようにします。
POST http://server/data/media
body:
{
"Name": "Test",
"Latitude": 12.59817,
"Longitude": 52.12873
}
メタデータ エントリを作成し、次のような応答を返すには:
201 Created
Location: http://server/data/media/21323
{
"Name": "Test",
"Latitude": 12.59817,
"Longitude": 52.12873,
"ContentUrl": "http://server/data/media/21323/content"
}
クライアントはこの ContentUrl を使用して、ファイル データを PUT できます。
このアプローチのよいところは、サーバーが膨大な量のデータで負荷がかかり始めたときに、返される URL が、より多くのスペース/容量を持つ他のサーバーを指すことができることです。または、帯域幅が問題になる場合は、何らかのラウンドロビン アプローチを実装することもできます。