Мне любопытно посмотреть, смогу ли я помочь разрешить некоторую путаницу вокруг webdav. В большинстве стандартов IETF используется язык, который кажется очень тупым.
Обоснование WebDAV
HTTP был разработан для извлечения веб-ресурсов или, скажем так, для чтения. Он не предназначен для создания веб-ресурса.
Короче говоря, WebDAV предоставляет полный набор возможностей удаленного доступа к документам, включая хранение файлов, управление каталогами и поддержку совместной разработки.
Подумайте о файловой системе
Кратчайший путь к пониманию webdav - это сходство с такими веб-ресурсами, как файловая система.
Как и папки, существует collections
в качестве специального веб-ресурса, который может содержать другие веб-ресурсы. Нужно было выделить это как особый ресурс, потому что возможности (применяемые методы различны для обычного ресурса)
Так родился новый метод - mkcol
Так же, как files have attributes
, web resources have meta-properties
, который предоставляет некоторые подробности о веб-ресурсе. Сам контент веб-ресурса может отображаться как раньше (HTTP уже делает это за вас).
Короче, вам также нужно иметь methods to enquire into meta-properties
- PROPFIND
, а также изменить их - PROPATCH
. Полезные нагрузки XML предназначались для запроса и получения этих свойств.
Подход WebDAV заключается в хранении свойств вне тела файла, их можно запрашивать без получения всего тела и обновлять без изменения тела.
Некоторые свойства относятся к webdav. Они были созданы по необходимости. Например: Resourcetype Property
. Он был создан для того, чтобы узнать, используете ли вы специальный ресурс коллекции или обычный веб-ресурс, содержащийся в коллекции.
Помните, что GET (например, HTTP) выбирает ресурс, PUT изменяет ресурс, а DELETE удаляет ресурс.
Ограничения HTTP
Чтобы понять webdav, вы должны понимать ограничения HTTP.
- Он не имеет состояния, заставляя пользователя строить поиск с нуля.
- Нельзя сказать, делайте это тоже для всех ресурсов в определенной коллекции.
- Он предназначен только для чтения и не обеспечивает возможности совместной работы, необходимые для авторинга.
- В нем отсутствует поддержка операций с несколькими ресурсами. Для поддержки этого было создано
depth header
, чтобы вы могли определить, нужно ли работать со всеми ресурсами.
Модель ресурсов WebDAV
+--------+ +--------------+
|Resource|... |Property |
+--------+ +--------------+
+------++------+
|Webdav||custom|
+------++------+
+-----------+
|Dav root: /|......
+-----------+ | +--------+
|.....|Resource|
| +--------+
| +----------+
|.....|Collection|..... +----------+
' +----------+ |...|Collection|
| +----------+
| +--------+
|....|Resource|
+--------+