-
Notifications
You must be signed in to change notification settings - Fork 4
/
983.txt
92 lines (63 loc) · 5.5 KB
/
983.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
[26] [DFN[[CODE(HTTP)@en[[[PROPPATCH]]]]]] は、[[資源]]の[[特性]]の変更や削除を指示する[[要求メソッド]]です。
* 仕様書
[REFS[
- [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>
- [3] '''[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.2>'''
- [16] [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-11.4>
- [18] [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-14.19>
- [21] [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-15.7>
- [23] [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#page-101>
- [25] [CITE[RFC Errata Report]] ([TIME[2014-12-02 19:33:46 +09:00]] 版) <http://www.rfc-editor.org/errata_search.php?rfc=4918>
]REFS]
* 意味
[4] [CODE(HTTP)@en[[[PROPPATCH]]]] [[メソッド]]は、[[要求URL]]によって識別される[[資源]]の[[特性]]を設定したり、削除したりすることを求めるものです [SRC[>>3]]。
[13] [[安全なメソッド]]ではありませんが、[[冪等メソッド]]です [SRC[>>3]]。
[2] [[書き込みロック]]の適用対象となります [SRC[>>1]]。
* 構文
[8] [[要求]]の [[payload body]] は、 [CODE(XMLe)@en[[[propertyupdate]]]]
[[要素]]でなければ[['''なりません''']] [SRC[>>3]]。
[19] [CODE(URI)@en[[[DAV:]]]] [[名前空間]]の [DFN[[CODE(XMLe)@en[[[propertyupdate]]]]]]
[[要素]]は、[[資源]]の[[特性]]を変更する要求を含めるもの [SRC[>>18]] です。
[20] [[内容]]は[[要素内容]]で、 [CODE(XMLe)@en[[[remove]]]] [[要素]]や
[CODE(XMLe)@en[[[set]]]] [[要素]]の1つ[[以上]]の列です [SRC[>>18]]。
[FIG(railroad)[
= +
== |
=== [CODE(XMLe)@en[[[remove]]]]
=== [CODE(XMLe)@en[[[set]]]]
]FIG]
[24] [[要素]]の順序は処理の順序を表します。
* 処理
[5] [[WebDAV]] に従う[[資源]]は、 [CODE(HTTP)@en[[[PROPPATCH]]]] [[メソッド]]および[[要素]]
[CODE(XMLe)@en[[[propertyupdate]]]]、[CODE(XMLe)@en[[[set]]]]、
[CODE(XMLe)@en[[[remove]]]] に対応しなければ[['''なりません''']] [SRC[>>3]]。
[6] この[[メソッド]]の処理は、[[アクセス制御]]の制約の対象となります [SRC[>>3]]。
[7] [[WebDAV]] に従う[[資源]]は、任意の[[死特性]]の設定に対応する[['''べきです''']] [SRC[>>3]]。
[9] [[鯖]]は、 [CODE(XMLe)@en[[[propertyupdate]]]] [[要素]]の[[子要素]]を[[文書順]]に処理しなければ[['''なりません''']] [SRC[>>3, >>25]]。
[10] [[要求]]に含まれる指示はすべて実行するか、どれも実行しないかのいずれかでなければ[['''なりません''']]。
処理途中でエラーが発生したら、実行済みの処理はすべて戻してエラーを返さなければ[['''なりません''']]。 [SRC[>>3]]
[22] [[特性]]を変更しても、 [CODE(HTTP)@en[[[Last-Modified:]]]] [[ヘッダー]]に使う値は更新する[['''べきではありません''']] [SRC[>>21]]。
[11] [[要求]]の [[payload body]] に従って処理を開始した場合 (そこまででエラーとならなかった場合) には、
[CODE(HTTP)[[[207]]]] [[応答]]を返さなければ[['''なりません''']] [SRC[>>3]]。
[14] [CODE(XMLe)@en[[[propstat]]]] [[要素]]の [CODE(XMLe)@en[[[status]]]]
[[要素]]では、[[クライアント]]は任意の [CODE(HTTP)[[[2xx]]]]、
[CODE(HTTP)[[[3xx]]]]、[CODE(HTTP)[[[4xx]]]]、[CODE(HTTP)[[[5xx]]]]
[[状態符号]]に対応できるべきですが、特に [CODE(HTTP)[[[200]]]]、
[CODE(HTTP)[[[403]]]]、[CODE(HTTP)[[[409]]]]、[CODE(HTTP)[[[424]]]]、
[CODE(HTTP)[[[507]]]] を用います [SRC[>>3]]。
[27] 設定や削除が成功したら、 [CODE(HTTP)[[[200]]]] を使うことができます [SRC[>>3]]。
[15] 保護された[[特性]]を変更しようとして [CODE(HTTP)[[[403]]]] エラーとなった場合には、
[[事前条件符号]] [CODE(HTTP)[[[cannot-modify-protected-property]]]]
を指定する[['''べきです''']] [SRC[>>3, >>23]]。
[28] その他何らかの理由で変更を拒否する時も、 [CODE(HTTP)[[[403]]]]
を使うことができます [SRC[>>3]]。
[29] 値が当該[[特性]]の意味的に正しくない時は、 [CODE(HTTP)[[[409]]]]
を使うことができます [SRC[>>3]]。
[30] 値を保存する[[ストレージ容量]]に問題がある時は、 [CODE(HTTP)[[[507]]]]
を使うことができます [SRC[>>3]]。
[17] ある命令が失敗したら、残りの命令も [CODE(HTTP)[[[424]]]]
で失敗することになります [SRC[>>16, >>3]]。
[12] [CODE(HTTP)@en[[[PROPPATCH]]]] [[要求]]への[[応答]]は[[キャッシュ不可能]]です [SRC[>>3]]。
[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.2>