В чем разница между HTTP методами PUT и PATCH?

«В чем разница между HTTP методами PUT и PATCH?» — вопрос из категории Сети, который задают на 10% собеседований Java Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

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 для точечных обновлений, особенно для больших объектов.