Открыть сервис

PROPPATCH

PROPPATCH — это метод HTTP, определённый в спецификации WebDAV (RFC 4918), предназначенный для атомарного (единовременного) создания, удаления и изменения пользовательских свойств (свойств) ресурсов на веб-сервере. В отличие от метода PROPFIND, который используется для чтения свойств, PROPPATCH позволяет клиенту отправлять на сервер набор инструкций для модификации метаданных ресурса, таких как автор, дата создания, права доступа или любые другие пользовательские атрибуты, хранящиеся в формате XML.

История и стандартизация

Метод PROPPATCH был впервые определён в 1999 году в рамках рабочей группы IETF (Internet Engineering Task Force) по протоколу WebDAV (Web Distributed Authoring and Versioning). Первоначальная спецификация была опубликована в RFC 2518, а затем уточнена и заменена в 2007 году RFC 4918. Разработка PROPPATCH была обусловлена необходимостью предоставить веб-клиентам (например, редакторам документов, системам управления контентом) возможность управлять метаданными ресурсов на сервере без необходимости загрузки полного файла или использования специализированных протоколов (например, FTP). В отличие от методов PUT или POST, которые изменяют содержимое ресурса, PROPPATCH оперирует исключительно его свойствами.

Принцип работы

PROPPATCH работает по принципу атомарного набора операций. Клиент отправляет HTTP-запрос с методом PROPPATCH на URI ресурса, свойства которого требуется изменить. Тело запроса представляет собой XML-документ, соответствующий схеме WebDAV, который содержит один или несколько элементов <propertyupdate>. Внутри этого элемента указываются инструкции двух типов:

  • <set> (установить): содержит XML-элемент, определяющий новое значение свойства. Если свойство с таким именем уже существует, оно заменяется; если нет — создаётся.
  • <remove> (удалить): содержит XML-элемент, определяющий имя свойства, которое необходимо удалить. В этом случае значение элемента игнорируется.

Сервер обрабатывает все инструкции в одном запросе атомарно: либо применяются все изменения, либо ни одно. В случае успеха сервер возвращает ответ с кодом 207 Multi-Status, содержащий XML-документ с результатами обработки каждой инструкции (статус 200 OK для успешных операций, 403 Forbidden для запрещённых, 409 Conflict для конфликтов и т.д.). В случае ошибки на уровне запроса (например, неверный XML) сервер может вернуть код 400 Bad Request.

Структура запроса

Типичный запрос PROPPATCH выглядит следующим образом:

``` PROPPATCH /docs/document.txt HTTP/1.1 Host: example.com Content-Type: application/xml; charset="utf-8" Content-Length: xxx

<?xml version="1.0" encoding="utf-8" ?> <D:propertyupdate xmlns:D="DAV:"> <D:set> <D:prop> <my:author xmlns:my="http://example.com/ns/">Иван Петров</my:author> <my:status xmlns:my="http://example.com/ns/">черновик</my:status>; </D:prop> </D:set> <D:remove> <D:prop> <my:old-field xmlns:my="http://example.com/ns/"/>; </D:prop> </D:remove> </D:propertyupdate> ```

В этом примере клиент запрашивает установку свойств author и status и удаление свойства old-field для ресурса /docs/document.txt. Пространства имён XML (например, DAV: и http://example.com/ns/`) используются для разграничения стандартных свойств WebDAV и пользовательских свойств.

Применение

PROPPATCH широко используется в системах, реализующих протокол WebDAV, таких как:

  • Системы управления версиями (VCS): например, Subversion (SVN) использует PROPPATCH для хранения метаданных о файлах (например, svn:keywords, svn:ignore).
  • Системы управления контентом (CMS): позволяют пользователям изменять свойства документов (автор, дата публикации, категории) через веб-интерфейс, который внутренне использует PROPPATCH.
  • Файловые менеджеры и облачные хранилища: клиенты, такие как Cyberduck, WinSCP или собственные приложения для работы с WebDAV, используют PROPPATCH для установки пользовательских тегов, комментариев или прав доступа к файлам и папкам.
  • Коллаборативные редакторы: например, Microsoft Office (через WebDAV) может с помощью PROPPATCH сохранять метаданные документа (автор, время последнего изменения) непосредственно на сервере.

Ограничения и особенности

  • Атомарность: гарантирует, что либо все изменения свойств применяются, либо ни одно. Это предотвращает частичное обновление метаданных в случае сбоя.
  • Неизменяемость содержимого: PROPPATCH не влияет на тело ресурса (например, на текст файла). Для изменения содержимого используется метод PUT, а для блокировки ресурса на время редактирования — LOCK.
  • Зависимость от сервера: не все WebDAV-серверы поддерживают произвольные пользовательские свойства. Некоторые могут ограничивать набор разрешённых свойств или требовать определённой схемы XML.
  • Безопасность: сервер может проверять права доступа к каждому свойству. Например, изменение свойства owner может быть разрешено только администратору.

Связь с другими методами WebDAV

PROPPATCH тесно связан с методом PROPFIND, который используется для чтения свойств. Обычно клиент сначала выполняет PROPFIND для получения текущих значений свойств, а затем отправляет PROPPATCH для их изменения. Вместе эти методы образуют основу для управления метаданными в WebDAV. Для блокировки ресурса на время редактирования используется LOCK, а для снятия блокировки — UNLOCK.

Примеры реализации

  • Apache HTTP Server с модулем mod_dav поддерживает PROPPATCH для управления свойствами файлов и папок в WebDAV-репозиториях.
  • Microsoft IIS с расширением WebDAV также реализует этот метод.
  • ownCloud и Nextcloud (системы для организации совместного доступа к файлам) используют PROPPATCH для хранения и изменения пользовательских метаданных (например, тегов, комментариев, статусов).

Источники

  • RFC 4918 — HTTP Extensions for Web Distributed Authoring and Versioning (WebDAV)
  • RFC 2518 — HTTP Extensions for Distributed Authoring — WEBDAV (предшественник RFC 4918)
  • «WebDAV: Next Generation Collaborative Web Authoring» by L. Dusseault (O'Reilly, 2004)

BFOmetr — база данных и аналитика по компаниям России.

На главную BFOmetr →