REST Web サービスを使用してメタデータを含むファイルをアップロードするにはどうすればよいですか? 質問する

REST Web サービスを使用してメタデータを含むファイルをアップロードするにはどうすればよいですか? 質問する

現在、この URL を公開している REST Web サービスがあります。

http://サーバー/データ/メディア

ここで、ユーザーは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 が、より多くのスペース/容量を持つ他のサーバーを指すことができることです。または、帯域幅が問題になる場合は、何らかのラウンドロビン アプローチを実装することもできます。

おすすめ記事