Ответ
PUT и PATCH — это HTTP-методы для обновления ресурсов, но с разной семантикой.
PUT— полная замена ресурса. Клиент должен отправить полное представление ресурса. Отсутствующие в запросе поля будут удалены или сброшены в значения по умолчанию.PATCH— частичное обновление ресурса. Клиент отправляет только те поля, которые необходимо изменить.
Практический пример (Обновление пользователя):
Исходный ресурс GET /users/123:
{
"id": 123,
"name": "John",
"email": "john@old.com",
"age": 25
}
Запрос PUT:
PUT /users/123
Content-Type: application/json
{
"name": "John Doe",
"age": 26
}
Результат (GET /users/123): Поле email удалено, так как не было передано.
{
"id": 123,
"name": "John Doe",
"age": 26
}
Запрос PATCH:
PATCH /users/123
Content-Type: application/json
{
"age": 26
}
Результат (GET /users/123): Изменилось только поле age, email остался нетронутым.
{
"id": 123,
"name": "John",
"email": "john@old.com",
"age": 26
}
Важные свойства:
- Идемпотентность:
PUT— идемпотентен (многократный вызов с одними данными дает тот же результат).PATCH— не обязательно идемпотентен (зависит от реализации сервера). - Использование:
PUTподходит для создания/полной перезаписи ресурса, когда клиент управляет всем его состоянием.PATCHэффективен для точечных обновлений, особенно для больших ресурсов, уменьшая трафик и предотвращая конфликты.