我很想知道是否可以帮助解决有关 webdav 的一些困惑。大多数 IETF 标准使用的语言看起来很生硬。
WebDAV 背后的原理
HTTP 是为获取网络资源而设计的,或者我应该说是阅读。它不适用于创作网络资源。
简而言之,WebDAV 提供了一整套远程文档访问功能,包括文件存储、目录管理和对协作创作的支持。
想想文件系统
理解 webdav 的最短路径是把 web 资源当作文件系统来处理的相似性。
就像文件夹一样,collections 作为特殊的网络资源可以包含其他网络资源。它需要将其区分为特殊资源,因为功能(适用于普通资源的方法不同)
于是新方法诞生了——mkcol
就像files have attributes、web resources have meta-properties 一样,它提供了有关网络资源的一些详细信息。 Web 资源内容本身可以像以前一样呈现(HTTP 已经为您做到了)。
简而言之,您还需要拥有methods to enquire into meta-properties - PROPFIND 并更改它们 - PROPATCH。 XML 有效负载旨在查询和检索这些属性。
WebDAV的做法是把属性存储在文件体之外,可以不获取整个body就可以查询,不改变body就可以更新。
某些属性是特定于 webdav 的。它们是出于需要而创建的。例如:Resourcetype Property。创建它是为了询问您是否正在使用特殊的收藏资源或收藏中包含的普通网络资源。
请记住,GET(类似于 HTTP)获取资源,PUT 修改资源,而 DELETE 删除资源。
HTTP 的限制
要了解 webdav,您必须了解 HTTP 的局限性。
- 它是无状态的,迫使用户从头开始构建搜索。
- 您不能说对特定集合中的所有资源都执行此操作。
- 它是只读的,不提供创作所需的协作功能。
- 它缺乏对多资源操作的支持。为了支持这一点,创建了
depth header,以便您可以判断它是否需要在所有资源上工作。
WebDAV 资源模型
+--------+ +--------------+
|Resource|... |Property |
+--------+ +--------------+
+------++------+
|Webdav||custom|
+------++------+
+-----------+
|Dav root: /|......
+-----------+ | +--------+
|.....|Resource|
| +--------+
| +----------+
|.....|Collection|..... +----------+
' +----------+ |...|Collection|
| +----------+
| +--------+
|....|Resource|
+--------+