DELETEメソッド — リソースの削除

DELETEメソッドを使用してリソースを削除する方法、ソフト削除とハード削除の違い、適切なステータスコードの返し方を解説します。

Unsafe Methods

詳細な説明

DELETEの仕組み

DELETEメソッドはサーバーから指定されたリソースを削除します。DELETE成功後、同じURIへの後続のGETリクエストは404 Not Foundまたは410 Goneを返すべきです。

プロパティ

プロパティ
安全 いいえ
冪等 はい
キャッシュ可能 いいえ
リクエストボディ オプション(まれに使用)

基本的なDELETEリクエスト

DELETE /api/users/42 HTTP/1.1
Host: api.example.com
Authorization: Bearer eyJhbGciOiJIUzI1NiJ9...

レスポンスの選択肢

サーバーは通常、3つのステータスコードのいずれかで応答します:

HTTP/1.1 204 No Content
HTTP/1.1 200 OK
Content-Type: application/json

{ "message": "ユーザー42が正常に削除されました" }
HTTP/1.1 202 Accepted
Content-Type: application/json

{ "message": "削除がキューに入りました", "taskId": "abc-123" }
ステータス 使用タイミング
204 No Content リソース削除済み、ボディ不要
200 OK リソース削除済み、レスポンスに詳細を含む
202 Accepted 削除が非同期/キューに入っている

DELETEの冪等性

DELETEは冪等です:既に削除されたリソースを削除してもエラーを生成すべきではありません。ただし、多くのAPIは2回目のDELETEで404を返しますが、最終状態が同じ(リソースが存在しない)であるため技術的には許容されます。

ソフト削除 vs ハード削除

  • ハード削除: リソースがデータベースから永久に削除される
  • ソフト削除: deleted_atタイムスタンプが設定され、クエリからフィルタリングされるが復元可能
-- ソフト削除
UPDATE users SET deleted_at = NOW() WHERE id = 42;

-- ハード削除
DELETE FROM users WHERE id = 42;

多くの本番APIは監査証跡とデータ復旧のためにソフト削除を使用しています。

ユースケース

ユーザーが設定ページで「アカウント削除」をクリックし、DELETE /api/users/meへのリクエストがトリガーされます。管理ダッシュボードがDELETE /api/posts/1234でスパム投稿を削除します。CIパイプラインが各アーティファクトURLにDELETEリクエストを送信して古いデプロイメントをクリーンアップします。

試してみる — HTTP Method Reference

フルツールを開く