JSON-патч

JSON Patch — это JSON-массив операций: добавление, удаление, замена, перемещение, копирование и проверка. Каждая операция указывает местоположение в целевом документе с помощью JSON-указателя, например /tags/0. Отправляемый в качестве тела запроса PATCH с Content-Type application/json-patch+json, он точно указывает серверу, что нужно изменить, вместо отправки новой копии всего ресурса.

Как это работает

Операции применяются последовательно, и патч задуман как атомарный: если какая-либо операция завершится неудачей, ни одна из них не должна вступить в силу. Тестовая операция является встроенным предварительным условием — "only apply this patch if /status is still draft" — что делает JSON Patch облегченной формой оптимистичного параллельного выполнения на уровне поля.

Заблуждение

То, что частичный JSON-объект, отправленный с помощью PATCH, является JSON Patch. Это JSON Merge Patch (RFC 7396), другой формат, где null означает "delete this field" , а массивы можно заменять только целиком. Серверы обычно принимают либо один, либо другой формат, и Content-Type — это то, как они их различают.

Попробуйте здесь.

PATCH /protocol/v1/documents/{id} принимает массив RFC 6902: add, replace, remove и test для /title , /body и /tags — неудачная проверка приводит к ошибке 409, а body, не являющийся массивом, — к ошибке 400.

Источники

Другие термины

Читать страницу на английском

Все термины · Приёмы тестирования · Все 39 mock REST API

Последнее обновление