delete

DELETE メソッド (HTTP)

[6] DELETE メソッドは、 対象資源を削除することを要求するものです。

仕様書

意味

[216] DELETE メソッドは、 対象資源とその現在の機能との関連付けを削除することを起源鯖に要求するものです >>215

[13] WebDAV コレクションにおいては、要求URLで指定されたコレクションとすべての内部メンバーを削除するとの指示になります >>3

文脈

[33] プッシュメッセージ資源プッシュメッセージ購読資源受領証購読資源で使われます。

構文

[11] WebDAV クライアントは、コレクションに対する DELETE 要求Depth: infinity 以外の Depth: ヘッダーを指定してはなりません >>3

[219] DELETE 要求payload の意味は定義されていません >>215

[220] payload が含まれると、実装によっては要求を拒絶するかもしれません >>215

性質

[213] DELETE は、冪等なメソッドです >>212

[221] DELETE メソッドへの応答は、 キャッシュ可能ではありません >>215

[222] 同じ実効要求URLキャッシュがある状態で DELETE 要求が成功した場合には、 キャッシュ非妥当となります >>215

[2] 書き込みロックの適用対象となります >>1

処理

[217] 対象資源が複数の表現を持つ時、それらも破棄されるかもしれませんし、 されないかもしれません。関連する他のもの、例えばデータベース接続なども破棄されるかもしれません。 >>215 いずれにせよ詳細は実装依存であり、 HTTP の仕様の範囲外です。

[15] WebDAV コレクションにおいては、要求ヘッダーは削除する各資源に対して適用しなければなりません >>3

[12] WebDAV コレクションにおいては、 Depth: infinity が指定されたかのように動作しなければなりません >>3

[14] WebDAV コレクションの削除においてメンバーURLで識別される資源を削除できない時は、 その祖先を削除してはなりません >>3WebDAV コレクションに対する DELETE の完了時には、 一貫したURL名前空間となっていなければなりません >>3

[4] WebDAV は、削除された資源ロック根であるロックを破棄しなければなりません >>3

[5] WebDAV は、要求URLから資源への写像を削除しなければなりません >>3

[9] WebDAV に従う資源に対する DELETE の後他の操作が行われていない状態では、 その要求URLに対する GETHEADPROPFIND404 を返さなければなりません >>3

[10] 410 は認められていないようです。

[218] 起源鯖は、処理が成功した場合には、 処理が成功するであろうものの実施されていない場合には 202 を、 実施され追加情報は特に無い場合には 204 を、 実施され応答メッセージに状態を説明する表現を含める場合には 200 を返すべきです >>215

[16] WebDAV コレクションの削除でコレクション以外のメンバーの削除中にエラーが発生した場合には、 207 応答を使うことができます。 >>3

[17] 例えばコレクション内の一部の資源ロックされていて削除できなかった時には、 207 中に当該資源423 と記述することで、 これをクライアントに説明できます >>3

[19] なお 207 内で 424204 は使うべきではありません >>3

[18] WebDAV コレクションの削除で要求の処理が完全に失敗した時には、 207 でなく 4xx を使っても構いません >>3

[21] ロックが原因で失敗した場合には、状態符号 423事前条件符号 lock-token-submitted を使うことができます >>20

[23] なお、 WebDAV に対応していないクライアントコレクションDELETE しようとし、一部で失敗して 207 が返された時、 2xx であることから成功とみなされる可能性がありますが、 実用上はそれが問題になる場合は無さそうで、然程気にしなくても良い >>22 と言われています。

歴史

HTTP DELETE メソッド

RFC 1945 (HTTP/1.0) D.1.2; RFC 2068・2616 (HTTP/1.1) 9.7 DELETE

The DELETE method requests that the origin server delete the resource identified by the Request-URI. This method MAY be overridden by human intervention (or other means) on the origin server. The client cannot be guaranteed that the operation has been carried out, even if the status code returned from the origin server indicates that the action has been completed successfully. However, the server SHOULD not NOT indicate success unless, at the time the response is given, it intends to delete the resource or move it to an inaccessible location.

DELETE 方式は、起源サーバーに Request-URI で識別される資源を削除することを要求します。 この方式は、起源サーバーにおける人間の干渉 (や他の手段) で上書きされても構いません。クライアントは、たとえ起源サーバーが返した状態符号が動作は成功裏に完了したと示したとしても、操作が実行されたと保証されません。しかし、サーバーは、応答の時点で資源を削除するか、または接続不能な位置に移動するかするつもりでない限り、成功を示すべきではありません

A successful response SHOULD be 200 (OK) if the response includes an entity describing the status, 202 (Accepted) if the action has not yet been enacted, or 204 (No Content) action has been enacted if the response is OK but the response does not include an entity.

成功応答は、その応答が状態を説明する実体を含んでいるなら 200 (了解) と、動作がまだ行われていないなら 202 (受入れ) と、動作は行われたが応答が実体を含んでいないなら 204 (無内容) とするべきです

If the request passes through a cache and the Request-URI identifies one or more currently cached entities, those entries should SHOULD be treated as stale. Responses to this method are not cacheable.

要求がキャッシュを通じて渡され、 Request-URI が現在キャッシュされている実体の1つか複数個かを識別するなら、 それらの実体は腐敗しているものとして扱うべきです。 この方式への応答はキャッシュ可能ではありません。

HTML action delete

[208] Web Forms 2.0HTML5 には action 属性formaction 属性の値 delete が定義されており、フォーム提出の際に HTTPDELETE メソッドを使うことを表していました。

[209] WF2 を実装していた Opera も対応していました。

[210] しかし他の Webブラウザーには実装されず、また著者も削除には POST を使い続けたため、結局 HTML から delete は削除されました。

関連

[8] DELETE メソッドは REST 体系様式における資源に対する基本操作 (Webメソッド) の1つです。

[211] HTTP から派生した RTSPSIP には DELETE メソッドは存在しません。

[34] HTTP から派生した CATP にも DELETE がありますが、互換性はありません。 DELETE (CATP)

メモ

[214] RFC 7252 - The Constrained Application Protocol (CoAP) ( ( 版)) http://tools.ietf.org/html/rfc7252#section-5.8.4

[24] RFC 3253 - Versioning Extensions to WebDAV (Web Distributed Authoring and Versioning) () https://tools.ietf.org/html/rfc3253#section-3.13

[25] RFC 3253 - Versioning Extensions to WebDAV (Web Distributed Authoring and Versioning) () https://tools.ietf.org/html/rfc3253#section-5.6

[26] RFC 3253 - Versioning Extensions to WebDAV (Web Distributed Authoring and Versioning) () https://tools.ietf.org/html/rfc3253#section-6.5

[27] RFC 3253 - Versioning Extensions to WebDAV (Web Distributed Authoring and Versioning) () https://tools.ietf.org/html/rfc3253#section-11.5

[28] RFC 3253 - Versioning Extensions to WebDAV (Web Distributed Authoring and Versioning) () https://tools.ietf.org/html/rfc3253#section-13.8

[29] RFC 3253 - Versioning Extensions to WebDAV (Web Distributed Authoring and Versioning) () https://tools.ietf.org/html/rfc3253#section-14.4

[30] Issues List for Versioning Extensions to WebDAV (RFC 3253) () http://www.webdav.org/deltav/protocol/rfc3253-issues-list.htm

[31] RFC 5842 - Binding Extensions to Web Distributed Authoring and Versioning (WebDAV) () https://tools.ietf.org/html/rfc5842#section-2.4

[32] 10671 – consider adding support for PUT and DELETE as form methods () https://www.w3.org/Bugs/Public/show_bug.cgi?id=10671