Ответ
PUT полностью заменяет ресурс новыми данными. Если какие-то поля не указаны в запросе, они будут удалены. PUT является идемпотентным — повторные одинаковые вызовы дают один и тот же результат.
PATCH частично обновляет ресурс, изменяя только указанные поля. Остальные поля остаются без изменений. PATCH не является идемпотентным по умолчанию, так как последовательность разных PATCH-запросов может приводить к разным конечным состояниям.
Пример PUT (полная замена):
PUT /api/users/123
Content-Type: application/json
{
"email": "new@example.com"
// Поле "name" будет удалено, если не указано
}
Пример PATCH (частичное обновление):
PATCH /api/users/123
Content-Type: application/json
{
"email": "new@example.com"
// Поле "name" останется неизменным
}
Практическое правило: Используйте PUT, когда клиент может и должен отправить полное представление ресурса. Используйте PATCH для точечных обновлений, особенно для больших объектов.