/
118.txt
118 lines (84 loc) · 6.61 KB
/
118.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
[6] [DFN[[CODE(HTTP)@en[[[DELETE]]]]]] [[メソッド]]は、
[[対象資源]]を削除することを[[要求]]するものです。
* 仕様書
[REFS[
- [215] '''[CITE@en[RFC 7231 - Hypertext Transfer Protocol (HTTP/1.1): Semantics and Content]] ([TIME[2014-06-07 01:55:45 +09:00]] 版) <https://tools.ietf.org/html/rfc7231#section-4.3.5>'''
- [212] [CITE@en[RFC 7231 - Hypertext Transfer Protocol (HTTP/1.1): Semantics and Content]] ([TIME[2014-06-07 01:55:45 +09:00]] 版) <https://tools.ietf.org/html/rfc7231#section-4.2.2>
- [1] [CITE@en[RFC 4918 - HTTP Extensions for Web Distributed Authoring and Versioning (WebDAV)]] ([TIME[2014-09-21 17:04:59 +09:00]] 版) <http://tools.ietf.org/html/rfc4918#section-7>
]REFS]
* 意味
[216] [CODE(HTTP)@en[[[DELETE]]]] [[メソッド]]は、
[[対象資源]]とその現在の機能との関連付けを削除することを[[起源鯖]]に要求するものです [SRC[>>215]]。
* 構文
[219] [CODE(HTTP)@en[[[DELETE]]]] [[要求]]の [[payload]] の意味は定義されていません [SRC[>>215]]。
[220] [[payload]] が含まれると、実装によっては[[要求]]を拒絶するかもしれません [SRC[>>215]]。
* 性質
[213] [CODE(HTTP)@en[[[DELETE]]]] は、[[冪等なメソッド]]です [SRC[>>212]]。
[221] [CODE(HTTP)@en[[[DELETE]]]] [[メソッド]]への[[応答]]は、
[[キャッシュ可能]]ではありません [SRC[>>215]]。
[222] 同じ[[実効要求URL]]の[[キャッシュ]]がある状態で
[CODE(HTTP)@en[[[DELETE]]]] [[要求]]が成功した場合には、
[[キャッシュ]]は[[非妥当]]となります [SRC[>>215]]。
[2] [[書き込みロック]]の適用対象となります [SRC[>>1]]。
* 処理モデル
[217] [[対象資源]]が複数の[[表現]]を持つ時、それらも破棄されるかもしれませんし、
されないかもしれません。関連する他のもの、例えばデータベース接続なども破棄されるかもしれません。
[SRC[>>215]] いずれにせよ詳細は実装依存であり、 [[HTTP]] の仕様の範囲外です。
[218] [[起源鯖]]は、処理が成功した場合には、
処理が成功するであろうものの実施されていない場合には [CODE(HTTP)[[[202]]]] を、
実施され追加情報は特に無い場合には [CODE(HTTP)[[[204]]]] を、
実施され[[応答メッセージ]]に状態を説明する[[表現]]を含める場合には [CODE(HTTP)[[[200]]]]
を返す[['''べきです''']] [SRC[>>215]]。
* 歴史
** HTTP [CODE@en[DELETE]] メソッド
[REFS[
= [205] [[RFC 1945]] ([[HTTP/1.0]]) ([[IETF]] [[情報提供]]) <urn:ietf:rfc:1945>
-- [CSECTION[D.1.2 DELETE]]
= [206] [DEL[[[RFC 2068]] ([[HTTP/1.1]]) ([[IETF]] [[提案標準]]) <urn:ietf:rfc:2068>]]
-- [CSECTION[9.7 DELETE]]
= [7] [[RFC 2616]] ([[HTTP/1.1]]) <http://tools.ietf.org/html/rfc2616>
-- [207] [CSECTION[9.7 DELETE]]
]REFS]
[FIG(quote)[
[FIGCAPTION[
RFC 1945 (HTTP/1.0) D.1.2; RFC 2068・2616 (HTTP/1.1) 9.7 DELETE
]FIGCAPTION]
> The DELETE method requests that the origin server delete the resource
identified by the Request-URI. [INS[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 [DEL[not]] [INS[NOT]] indicate success unless, at the time the response is given, it intends to delete the resource or move it to an inaccessible location.]]
[CODE(HTTP)[DELETE]] 方式は、起源サーバーに [CODE(ABNF)[Request-URI]]
で識別される[[資源]]を削除することを要求します。 [INS[この方式は、起源サーバーにおける人間の干渉 (や他の手段) で上書きされても'''構いません'''。クライアントは、たとえ起源サーバーが返した[[状態符号]]が動作は成功裏に完了したと示したとしても、操作が実行されたと保証されません。しかし、サーバーは、応答の時点で資源を削除するか、または接続不能な位置に移動するかするつもりでない限り、成功を示す'''べきではありません'''。]]
[INS[
> 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) [INS[action has been enacted]] [DEL[if the response is OK]] but [INS[the response]]
does not include an entity.
成功応答は、その応答が状態を説明する[[実体]]を含んでいるなら [CODE(HTTP)[[[200]]]]
(了解) と、動作がまだ行われていないなら [CODE(HTTP)[[[202]]]] (受入れ)
と、動作は行われたが応答が実体を含んでいないなら [CODE(HTTP)[[[204]]]]
(無内容) とする'''べきです'''。
> If the request passes through a cache and the Request-URI identifies
one or more currently cached entities, those entries [DEL[should]] [INS[SHOULD]] be
treated as stale. Responses to this method are not cach[INS[e]]able.
要求が[[キャッシュ]]を通じて渡され、 [CODE(ABNF)[Request-URI]]
が現在キャッシュされている実体の1つか複数個かを識別するなら、
それらの実体は[[腐敗]]しているものとして扱う'''べきです'''。
この方式への応答は[[キャッシュ可能]]ではありません。
]INS]
]FIG]
** HTML [CODE(HTMLa)@en[action]] [CODE(HTML)@en[delete]]
[208] [[Web Forms 2.0]] や [[HTML5]] には [CODE(HTMLa)@en[[[action]]]] [[属性]]や
[CODE(HTMLa)@en[[[formaction]]]] [[属性]]の値 [DFN[[CODE(HTML)@en[[[delete]]]]]]
が定義されており、[[フォーム]]の[[提出]]の際に [[HTTP]] の [CODE(HTTP)@en[[[DELETE]]]]
[[メソッド]]を使うことを表していました。
[209] [[WF2]] を実装していた [[Opera]] も対応していました。
[210] しかし他の [[Webブラウザー]]には実装されず、また[[著者]]も削除には [CODE(HTTP)@en[[[POST]]]]
を使い続けたため、結局 [[HTML]] から [CODE(HTML)@en[[[delete]]]] は削除されました。
* 関連
[8] [CODE(HTTP)[DELETE]] メソッドは [[REST]]
[[体系様式]]における[[資源]]に対する基本操作
([[Webメソッド]]) の1つです。
[211] [[HTTP]] から派生した [[RTSP]] や [[SIP]] には [CODE(HTTP)@en[[[DELETE]]]]
[[メソッド]]は存在しません。
[214] [CITE@en[RFC 7252 - The Constrained Application Protocol (CoAP)]]
( ([TIME[2014-06-27 00:59:37 +09:00]] 版))
<http://tools.ietf.org/html/rfc7252#section-5.8.4>