[27] [DFN[[CODE(HTTP)@en[[[MKCOL]]]]]] は、[[コレクション]]の作成を求める[[要求メソッド]]です。

* 仕様書

[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>
- [29] [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#appendix-D>
- [25] [CITE[RFC Errata Report]] ([TIME[2014-12-02 19:29:54 +09:00]] 版) <http://www.rfc-editor.org/errata_search.php?rfc=4918>
- [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] ただしそのための標準化された方法は用意されていません。

* 処理

[26] [[WebDAV]] に従う[[資源]]は、 [CODE(HTTP)@en[[[MKCOL]]]]
[[要求]]に対応しなければ[['''なりません''']] [SRC[>>25]]。

[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]]

[28] [[LNR]] の場合、[[コレクション]]に変換します [SRC[>>29]]。

[20] [[コレクション]]を作成した場合には、 [CODE(HTTP)[[[201]]]] [[応答]]を返します [SRC[>>7]]。
[CODE(HTTP)[[[3xx]]]] を返しては[['''なりません''']] [SRC[>>24]]。

[23] [[ストレージ]]制限により[[コレクション]]を作成できなかった場合には、
[CODE(HTTP)[[[507]]]] [[応答]]を返します [SRC[>>7]]。

[18] [[応答]]は[[キャッシュ不可能]]です [SRC[>>7]]。

[30] [CITE@en[RFC 5689 - Extended MKCOL for Web Distributed Authoring and Versioning (WebDAV)]]
([TIME[2015-07-26 16:59:07 +09:00]] 版)
<https://tools.ietf.org/html/rfc5689>

[31] [CITE@en[RFC 8144 - Use of the Prefer Header Field in Web Distributed Authoring and Versioning (WebDAV)]]
([TIME[2017-04-19 23:22:44 +09:00]])
<https://tools.ietf.org/html/rfc8144#section-2.3>

[32] [CITE@en[RFC 3253 - Versioning Extensions to WebDAV (Web Distributed Authoring and Versioning)]]
([TIME[2017-09-17 18:19:04 +09:00]])
<https://tools.ietf.org/html/rfc3253#section-12.9>

[33] [CITE@en[RFC 3253 - Versioning Extensions to WebDAV (Web Distributed Authoring and Versioning)]]
([TIME[2017-09-17 18:19:04 +09:00]])
<https://tools.ietf.org/html/rfc3253#section-14.5>

[34] [CITE@en[RFC 5689 - Extended MKCOL for Web Distributed Authoring and Versioning (WebDAV)]]
([TIME[2017-09-17 19:54:27 +09:00]])
<https://tools.ietf.org/html/rfc5689>