たとえばPUT ~/people/123/shoes
、本体がコレクション全体の表現である場合など、コレクションの大規模な置き換えを許可しました。
これは、クライアントがアイテムを確認し、一部をプルーニングして他の一部を追加し、サーバーを更新する必要があるアイテムの小さな子コレクションに対して機能します。空のコレクションをPUTして、すべてを削除できます。
これはGET ~/people/123/shoes/9
、PUTが削除してもキャッシュに残っていることを意味しますが、これは単なるキャッシュの問題であり、他の誰かが靴を削除した場合に問題になります。
データ/システムAPIは、有効期限ではなく常にETagを使用するため、リクエストごとにサーバーがヒットし、データを変更するには正しいバージョン/同時実行ヘッダーが必要です。読み取り専用で、ビュー/レポートに調整されたAPIの場合、有効期限を使用して、オリジンへのヒットを減らします。たとえば、リーダーボードは10分間有効です。
のようなはるかに大きなコレクションの場合~/people
、私は複数の削除を必要としない傾向があり、ユースケースは自然に発生しない傾向があるため、単一のDELETEは正常に機能します。
将来的には、REST APIの構築や、監査などの同じ問題や要件に当てはまった経験から、GET動詞とPOST動詞のみを使用し、イベントに関する設計(例:POST a change of addressイベント)を使用する傾向がありますが、独自の一連の問題が付属します:)
また、厳密な「Fielding zealot」REST API設計を望まず、生産性とキャッシュ階層化の理由。