10

REST の原則によれば、サーバーへのすべての POST はリソースの作成に使用されることになっていることを理解しています。サーバー上の何かを変更します。情報を取得したい場合は、GET を使用します。

しかし、リソースを取得するために広範な情報を送信する必要がある場合はどうでしょうか?

たとえば、URL には長すぎる複雑な検索パラメーター。または、仮説として、OCR や同様の画像比較など、検索する画像を送信したいとします。

これらの場合、データをサーバーに POST する必要があるように見えますが、結果は変更ではなく、単なる情報です。画像を POST し、サーバーに存在する類似の画像のリストを受け取ります。

実際に違反でない限り、これらの原則に違反する REST API を構築したくありません。

編集

これまでの回答はすべて正しいようです (!): Sergio と Kay は、必要に応じて「ルールを曲げる」ことの実際の価値について正しいです。しかし、uriDium には良い点があります。

画像をアップロードすると、実際にはサーバーに変更が生じます。一時的ではありますが、新しいファイルが作成されます。複雑な検索を「ドキュメント」と同じように考えることができます。

サーバーが変更され、新しい一時的なリソースを生成する「一時的な」変更、「一時的な POST」の概念を考えることができると思います。その場合、RESTful な考慮事項として、次のような動作になる可能性があります。

  1. クライアント: エフェメラル リソースを POST する
  2. サーバー: エフェメラル リソース URI と TTL ヘッダー (?) で応答します。リソース URI 以外で応答するのは落ち着かないですよね?
  3. クライアント: TTL 時間内にエフェメラル リソースを取得する
  4. サーバーは TTL 後にリソースを削除します

ステップ2で完全な一時的なリソースで応答し、そこで対話を終了することを検討します:-)

4

2 に答える 2

4

たとえば、検索用のパラメーターを送信する場合、POST を使用してサーバー上で新しい検索要求を作成できます。完了したら、サーバー上に作成した検索パラメーター オブジェクトの ID を使用して GET を実行します。それはRESTfulなアプローチを維持します

于 2014-01-31T08:45:47.940 に答える