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