HTTPQUERY
日本語

DELETE

使い方

DELETE リクエストは、ターゲットリソースを削除するようサーバーに指示します。削除が実際に何を意味するかはサーバーが決めます。リソースは完全に消去されることもあれば、アーカイブされたり、非アクティブとしてマークされたりすることもあります。

REST API はリソースの破棄を表現するために DELETE に大きく依存しています。DELETE /api/users/123 のような API エンドポイントは、123 で識別されるユーザーレコードを削除するという明確な意図を示します。これは作成、更新、読み取り、破棄の操作に対する PUT/POST/GET/DELETE というパターンに直接対応します。

HTML フォームは GET と POST のみをサポートします。fetch や XMLHttpRequest といった JavaScript API は DELETE をネイティブにサポートします。一部のフレームワークは回避策として、_method=DELETE パラメーターを伴う POST を使用します。

サーバーは結果に応じて、いくつかのステータスコードのいずれかで応答します。

ハードデリートはリソースを完全に削除します。以降の GET リクエストは 404 または 410 Gone を返します。ソフトデリートは、基盤となるデータを削除せずにリソースを非アクティブとしてマークします。リソースは管理用 API やクエリパラメーターを通じて引き続き取得できます。410 は恒久的な削除を伝え、404 はリソースがその URI にもはや存在しない場合に適切です。

DELETE リクエストは冪等です。同じリクエストを複数回送信しても、1回送信した場合と同じサーバー状態になります。最初のリクエストがリソースを削除し、以降のリクエストには追加の効果がありません。ただしレスポンスコードは異なる場合があります。最初のリクエストは 200 OK または 204 No Content を返し、それ以降のリクエストは 404 Not Found または 410 Gone を返します。

リソースの削除

クライアントが特定のファイルの削除を要求します。サーバーはそのファイルを削除し、メッセージボディなしで操作を確認するために 204 No Content で応答します。

リクエスト

DELETE /uploads/report.pdf HTTP/1.1
Host: api.example.re

レスポンス

HTTP/1.1 204 No Content

確認を伴う REST API の削除

REST API は、削除を確認し削除されたリソースを特定する JSON ボディとともに 200 OK を返します。

リクエスト

DELETE /api/users/123 HTTP/1.1
Host: api.example.re
Authorization: Bearer eyJhbGciOiJIUzI1NiJ9...

レスポンス

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

{"deleted": true, "id": 123}

ほとんどの API は破壊的な操作を許可する前に認証を要求するため、Authorization ヘッダーはベアラートークンを運びます。

CORS

クロスオリジンの DELETE リクエストは常に CORS プリフライトを発生させます。ブラウザはまず OPTIONS リクエストを送信し、サーバーがターゲットリソースに対する DELETE を許可しているかを確認します。

リクエストボディとレスポンスボディ

DELETE リクエストはボディを含めることができますが、そのセマンティクスは未定義です。一部の中間装置は、リクエストスマグリングのリスクを理由にボディを伴う DELETE リクエストを拒否します。ほとんどの API は DELETE にリクエストボディを使いません。一括削除などでボディが必要な場合は、サーバーが期待する形式を定義します。

レスポンスボディはステータスコードによって異なります。200 OK レスポンスには、結果を説明するボディや削除されたリソースを返すボディが含まれます。204 No Content レスポンスはボディなしで削除を確認します。202 Accepted レスポンスは削除がキューに入れられたか進行中であることを示し、通常はステータスモニターへの参照を含みます。

レスポンスステータスコード

204 No Content は、ボディが不要な単純な削除に対する最も一般的なレスポンスです。200 OK は、サーバーが削除されたリソースや確認メッセージをレスポンスボディで返す場合に適しています。

202 Accepted は、削除がキューに入れられたか非同期であることを示します。レスポンスには通常、クライアントが進捗を確認するステータスエンドポイントを指す Location ヘッダーまたはボディが含まれます。

削除済みリソースへの以降のリクエストは 404 Not Found または 410 Gone を返します。410 レスポンスはそのリソースが以前は存在しており意図的に削除されたことを示しますが、404 はそのような区別をしません。