HTTP の DELETE 動詞がべき等であることを考えると、次の要求を発行すると、2 回目 (または 3 回目、4 回目など...) に何が起こるでしょうか?
DELETE /person/123
初めて、リソースが削除され、204 (成功、コンテンツなし) が返されます。後続の呼び出しで 204 を返す必要がありますか?それとも 404 (見つかりません) を返す必要がありますか?
HTTP の DELETE 動詞がべき等であることを考えると、次の要求を発行すると、2 回目 (または 3 回目、4 回目など...) に何が起こるでしょうか?
DELETE /person/123
初めて、リソースが削除され、204 (成功、コンテンツなし) が返されます。後続の呼び出しで 204 を返す必要がありますか?それとも 404 (見つかりません) を返す必要がありますか?
ステートレス システムの HTTP リクエストは独立している必要があるため、1 つのリクエストの結果が前のリクエストに依存してはなりません。2 人のユーザーが同じリソースに対して同時に DELETE を実行した場合にどうなるかを考えてみてください。2 番目のリクエストが 404 を取得するのは理にかなっています。1 人のユーザーが 2 つのリクエストを行う場合も同様です。
DELETE で 2 つの異なる応答を返すことは、冪等ではないと思います。冪等リクエストとは、必ずしも同じ応答が返されるとは限らず、システムを同じ状態のままにするものと考えると便利です。したがって、既存のリソースを削除するか、存在しないリソースを削除しようとするかに関係なく、サーバー リソースの状態は同じです。
RESTful Web サービス クックブックは、このための優れたリソースです。偶然にも、Google プレビューで DELETE に関するページが表示されます (11 ページ):
DELETE メソッドはべき等です。これは、サーバーが以前の要求でリソースを削除した場合でも、サーバーが応答コード 200 (OK) を返さなければならないことを意味します。しかし実際には、冪等操作として DELETE を実装するには、削除されたすべてのリソースをサーバーが追跡する必要があります。それ以外の場合は、404 (Not Found) が返される可能性があります。