1. ホーム
  2. rest

[解決済み] HTTP DELETEでリソースを2回目に削除したときのステータスコード

2022-04-25 22:35:04

質問

HTTPのDELETE動詞がべき乗であることを考えると、私が次のリクエストを出したとき、2回目(あるいは3回目、4回目など)はどうなるでしょうか。

DELETE /person/123

初回は、リソースが削除され、204(成功、コンテンツなし)を返します。それ以降の呼び出しでも204を返すべきでしょうか、それとも404(見つかりませんでした)を返すべきでしょうか?

解決方法を教えてください。

ステートレス・システムにおけるHTTPリクエストは独立したものであるべきなので、あるリクエストの結果が前のリクエストに依存することはないはずです。 もし2人のユーザーが同じリソースに対して同時にDELETEを行った場合、何が起こるかを考えてみてください。 2番目のリクエストが404を得るのは理にかなっています。 一人のユーザーが2つのリクエストをした場合にも同じことが言えるはずです。

DELETEが2つの異なる応答を返すことは、あなたにとってべき等であるとは感じられないと推測します。 私は、べき等なリクエストとは、必ずしも同じレスポンスを返すとは限らず、同じ状態でシステムを去ることだと考えるのが便利だと思います。 つまり、既存のリソースをDELETEしても、存在しないリソースをDELETEしようとしても、サーバーのリソースの状態は同じなのです。