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

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

Ответ

PUT и PATCH — это HTTP-методы для обновления ресурсов, но с разной семантикой.

PUT

  • Полная замена. Клиент должен отправить полное представление ресурса, даже если меняется одно поле.
  • Идемпотентность. Многократные одинаковые запросы дают тот же результат, что и один.
  • Использование: Обновление ресурса, когда известны все его атрибуты.
PUT /api/users/123
Content-Type: application/json

{
  "name": "Иван",
  "email": "ivan@example.com", // Все поля обязательны
  "age": 30
}

PATCH

  • Частичное обновление. Клиент отправляет только изменяемые поля.
  • Не всегда идемпотентен. Результат нескольких одинаковых PATCH-запросов может отличаться (например, инкремент счётчика).
  • Использование: Экономия трафика и предотвращение конфликтов при обновлении больших объектов.
  • Форматы: Часто используется JSON Patch (RFC 6902).
PATCH /api/users/123
Content-Type: application/json

{
  "age": 31 // Только изменяемое поле
}

// Или с JSON Patch
PATCH /api/users/123
Content-Type: application/json-patch+json

[
  { "op": "replace", "path": "/age", "value": 31 }
]

Ключевое отличие: PUT заменяет ресурс целиком, PATCH применяет к нему изменения.

Видео-ответы