我很想知道,如果我可以帮助解决围绕webdav的一些困惑.大多数IETF标准使用的语言似乎非常迟钝.
WebDAV背后的基本原理
HTTP是为获取网络资源而设计的,或者我应该说是阅读.它不适用于创作Web资源.
简而言之,WebDAV提供了一整套远程文档访问功能,包括文件存储,目录管理和对协作创作的支持.
想想文件系统
理解webdav的最短途径是处理Web资源(如文件系统)的相似性.
就像文件夹一样,集合作为特殊的Web资源可以包含其他Web资源.它需要将此区分为特殊资源,因为功能(适用的方法对于普通资源是不同的)
所以新方法诞生了 – mkcol
就像文件具有属性一样,Web资源具有元属性,可提供有关Web资源的一些详细信息. Web资源内容本身可以像以前一样呈现(HTTP已经为您执行了此操作).
简而言之,您还需要有方法来查询元属性 – PROPFIND并更改它们 – PROPATCH. XML有效负载旨在查询和检索这些属性.
WebDAV的方法是将属性存储在文件正文之外,可以在不更改整个正文的情况下进行查询而无需更改正文.
某些属性是特定于webdav的.它们是出于需要而创建的.例如:Resourcetype属性.它的创建是为了询问您是否正在使用特殊的集合资源或集合中包含的普通Web资源.
请记住,GET(与HTTP一样)获取资源,PUT修改资源,DELETE删除资源.
HTTP的局限性
要了解webdav,您必须了解HTTP的限制.
>它是无状态的,迫使用户从头开始构建搜索.
>你不能说特定集合中的所有资源也是如此.
>它是只读的,不提供创作所需的协作功能.
>它缺乏对多资源操作的支持.为了支持这一点,创建了深度标题,以便您可以判断它是否需要处理所有资源.
WebDAV资源模型
+--------+ +--------------+
|Resource|... |Property |
+--------+ +--------------+
+------++------+
|Webdav||custom|
+------++------+
+-----------+
|Dav root: /|......
+-----------+ | +--------+
|.....|Resource|
| +--------+
| +----------+
|.....|Collection|..... +----------+
' +----------+ |...|Collection|
| +----------+
| +--------+
|....|Resource|
+--------+