WebDAV

WebDAV расширяет HTTP операциями для удалённой работы с файлами и коллекциями. Клиент может не только читать ресурс, но и получать свойства, создавать каталоги, копировать, перемещать и блокировать изменение.

Методы

MethodНазначение
PROPFINDполучить свойства ресурса или коллекции
PROPPATCHизменить свойства
MKCOLсоздать коллекцию, похожую на каталог
COPYскопировать ресурс
MOVEпереместить ресурс
LOCKполучить блокировку
UNLOCKосвободить блокировку

Обычные GET, PUT, DELETE и authentication-механизмы HTTP продолжают использоваться.

Depth

Заголовок Depth определяет, насколько глубоко операция обходит коллекцию:

PROPFIND /documents/ HTTP/1.1
Host: files.example.org
Depth: 1

Глубокий обход большой структуры может быть дорогим, поэтому сервер вправе ограничивать его.

Ответ Multi-Status

Одна операция может затронуть несколько ресурсов с разными результатами. Для этого используется 207 Multi-Status, обычно с XML body, где у каждого ресурса свой status.

Это важное отличие от обычного предположения «один request — один status результата».

Блокировки

LOCK помогает координировать изменение ресурса несколькими клиентами. Клиент получает lock token и передаёт его при последующей записи.

Блокировка:

  • имеет scope и timeout;
  • может закончиться;
  • не заменяет authorization;
  • требует корректного восстановления после разрыва клиента.

Где встречается

  • сетевое хранилище документов;
  • совместное редактирование;
  • подключение удалённой папки как filesystem;
  • интеграция с системой управления документами.

Вопросы для собеседования

WebDAV — отдельный transport protocol?

Нет, это набор расширений HTTP.

Почему ответ может быть 207?

Потому что разные ресурсы внутри одной операции получили разные статусы.

Достаточно ли LOCK для защиты данных?

Нет. Нужны authentication, authorization, TLS и серверная проверка токена блокировки.

Связанные заметки