Ответ
PATCH используется для частичного обновления ресурса, в то время как PUT предназначен для полной замены ресурса.
Сравнение на примере обновления пользователя с id=123:
-
PUT-запрос (полная замена): Клиент должен отправить ВСЕ поля ресурса.
PUT /users/123 HTTP/1.1 Content-Type: application/json { "name": "Иван", "email": "new@example.com", // Обновлено "age": 30 // Обязательно, иначе поле будет удалено! } -
PATCH-запрос (частичное обновление): Клиент отправляет только изменяемые поля.
PATCH /users/123 HTTP/1.1 Content-Type: application/json { "email": "new@example.com" // Только это поле будет обновлено }
| Ключевые различия: | Характеристика | PUT | PATCH |
|---|---|---|---|
| Семантика | Полная замена | Частичное обновление | |
| Идемпотентность | Да. Многократный вызов дает одинаковый результат. | Не гарантируется. Зависит от формата запроса (например, операция increment неидемпотентна). |
|
| Передаваемые данные | Весь ресурс | Только дельта (изменения) | |
| Форматы PATCH | — | JSON Patch (RFC 6902), JSON Merge Patch (RFC 7396) или простой частичный JSON. |
Best Practice: Используйте PATCH для оптимизации трафика и атомарного обновления отдельных полей, особенно для больших ресурсов.