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リクエストを送信して古いデプロイメントをクリーンアップします。