Ответ
PATCH — это HTTP-метод, предназначенный для частичного обновления ресурса. В отличие от PUT, который требует отправки полного представления ресурса для его полной замены, PATCH применяет только набор изменений, указанных в теле запроса.
Пример запроса PATCH:
PATCH /api/users/123 HTTP/1.1
Host: example.com
Content-Type: application/json
{
"email": "updated@example.com",
"age": 30
}
Этот запрос обновит только поля email и age у пользователя с ID 123, оставив остальные данные неизменными.
Ключевые аспекты и best practices:
- Идемпотентность: PATCH не обязан быть идемпотентным (в отличие от PUT), но рекомендуется проектировать операции так, чтобы повторение одного и того же запроса не вызывало побочных эффектов.
- Форматы изменений: Сервер должен договориться с клиентом о формате описания изменений. Чаще всего используется:
- JSON Merge Patch (стандартный JSON, где
nullозначает удаление поля). - JSON Patch (формат RFC 6902 с операциями
add,remove,replace).
- JSON Merge Patch (стандартный JSON, где
- Семантика: Всегда документируйте, какие поля ресурса можно обновлять через PATCH.
- Безопасность: Сервер должен валидировать частичные обновления, чтобы не допустить некорректного состояния ресурса.
Почему используют PATCH? Он уменьшает объем передаваемых данных и сетевой трафик, особенно при обновлении больших объектов.