PATCH
Метод запроса HTTP PATCH частично изменяет ресурс.
В какой-то степени PATCH можно назвать аналогом действия «обновить» из CRUD (однако не следует путать HTTP и CRUD — это две разные вещи).
Запрос PATCH является набором инструкций о том, как изменить ресурс. В отличие от PUT, который полностью заменяет ресурс.
PATCH может как быть идемпотентным, так и не быть, в отличие от PUT, который всегда идемпотентен. Операция считается идемпотентной, если её многократное выполнение приводит к тому же результату, что и однократное. Например, если автоинкрементное поле является важной частью ресурса, то PUT перезапишет его (т.к. он перезаписывает всё), но PATCH может и не перезаписать.
PATCH (как и POST) может иметь побочные эффекты.
Чтобы обозначить, что сервер поддерживает PATCH, можно добавить этот метод в список заголовков ответа Allow или Access-Control-Allow-Methods (для CORS).
Другим (неявным) индикатором, что метод PATCH разрешён, является наличие заголовка Accept-Patch, который описывает, какой формат изменения документа принимает сервер.
| Запрос имеет тело | Да |
|---|---|
| Успешный ответ имеет тело | Может |
| Безопасный | Нет |
| Идемпотентный | Нет |
| Кешируемый | Только если включена информация о дате последнего изменения |
| Допускается в HTML-формах | Нет |
Синтаксис
PATCH /file.txt HTTP/1.1
Пример
>Запрос
PATCH /file.txt HTTP/1.1
Host: www.example.com
Content-Type: application/example
If-Match: "e0023aa4e"
Content-Length: 100
[описание изменений]
Ответ
Успешный ответ указывается с помощью любого кода ответа серии 2xx.
В следующем примере используется код ответа 204, поскольку ответ не содержит тела сообщения. Если требуется передать тело, то используется код 200.
HTTP/1.1 204 No Content Content-Location: /file.txt ETag: "e0023aa4f"
Спецификации
| Specification |
|---|
| RFC 5789> |
Смотрите также
204Allow,Access-Control-Allow-MethodsAccept-Patch– указывает изменяемые типы документов принимаемые сервером.