-
Notifications
You must be signed in to change notification settings - Fork 4
/
592.txt
71 lines (48 loc) · 4.29 KB
/
592.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
* 仕様書
[REFS[
- [2] [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>
-- [4] [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.3>
- [7] '''[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-9.3>'''
- [24] [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-12>
- [1] [CITE@en[RFC 5689 - Extended MKCOL for Web Distributed Authoring and Versioning (WebDAV)]]
([TIME[2009-10-02 03:05:15 +09:00]] 版)
<http://tools.ietf.org/html/rfc5689>
]REFS]
* 意味
[8] [CODE(HTTP)@en[[[MKCOL]]]] [[要求メソッド]]は、[[要求URL]]
で指定した位置に新しい[[コレクション]]を作成することを求めるものです [SRC[>>7]]。
[3] [[書き込みロック]]の適用対象となります [SRC[>>2]]。
[5] [CODE(HTTP)@en[[[MKCOL]]]] [[メソッド]]は[[資源]]が存在しない時にだけ作成するので、
既存の[[コレクション]]を上書きすることはなく、 [[lost update問題]]はおきません。 [SRC[>>4]]
;; [6] [CODE(HTTP)@en[[[MKCOL]]]] と [CODE(HTTP)@en[[[LOCK]]]] を[[パイプライン]]送信することで[[ロック]]を得る確率を高めることができますが、保証はされません [SRC[>>4]]。
[19] [[安全なメソッド]]ではありませんが、[[冪等メソッド]]です [SRC[>>7]]。
* 構文
[13] [[要求]]の [[payload body]] は指定してもしなくても構いません。
[14] [[payload body]] が無い場合には、空の[[コレクション]]を作成することを表します。
[15] [[payload body]] がある場合には、[[コレクション]]の[[メンバー]]、[[本体]]、
[[コレクション]]や[[メンバー]]の[[特性]]を指定することができます [SRC[>>7]]。
;; [16] ただしそのための標準化された方法は用意されていません。
* 処理
[9] [[要求URL]]が既に[[資源]]に[[写像]]されていれば、
[CODE(HTTP)@en[[[MKCOL]]]] [[要求]]は失敗しなければ[['''なりません''']] [SRC[>>7]]。
[10] [[鯖]]は、[[要求URL]]が [CODE(URI)[[[/]]]] である場合を除き、
[[要求URL]]をその親の[[コレクション]]の[[内部メンバー]]としなければ[['''なりません''']]
[SRC[>>7]]。そのような祖先が存在しない時には、
[CODE(HTTP)[[[409]]]] [[応答]]を返して失敗しなければ[['''なりません''']] [SRC[>>7]]。
[EG[
[11] 例えば [CODE(URI)[/a/b/c/d/]] を作る際に [CODE(URI)[/a/b/c/]]
が存在しなければ、 [CODE(HTTP)[[[409]]]] を返さなければ[['''なりません''']] [SRC[>>7]]。
]EG]
[21] [[鯖]]が指定した位置に[[コレクション]]を作成することを認めていない場合や、
親[[コレクション]]が[[メンバー]]を受け付けていない時には、
[CODE(HTTP)[[[403]]]] [[応答]]を返します [SRC[>>7]]。
[22] 既に他の[[資源]]に[[写像]]されている [[URL]] が指定された時は、
[CODE(HTTP)[[[405]]]] [[応答]]を返します [SRC[>>7]]。
[12] [[要求]]に [[payload body]] が無かった場合には、新しく作った[[コレクション]]は[[メンバー]]を持つ[['''べきではありません''']] [SRC[>>7]]。
[17] [[要求]]に [[payload body]] が指定された場合の動作は未定義ですが、
[[鯖]]が対応しない種類の場合は、 [CODE(HTTP)[[[415]]]] [[応答]]を返さなければ[['''なりません''']]。 [SRC[>>7]]
[20] [[コレクション]]を作成した場合には、 [CODE(HTTP)[[[201]]]] [[応答]]を返します [SRC[>>7]]。
[CODE(HTTP)[[[3xx]]]] を返しては[['''なりません''']] [SRC[>>24]]。
[23] [[ストレージ]]制限により[[コレクション]]を作成できなかった場合には、
[CODE(HTTP)[[[507]]]] [[応答]]を返します [SRC[>>7]]。
[18] [[応答]]は[[キャッシュ不可能]]です [SRC[>>7]]。