Чем HTTP-метод PATCH отличается от PUT в REST API?

«Чем HTTP-метод PATCH отличается от PUT в REST API?» — вопрос из категории API тестирование, который задают на 10% собеседований QA Тестировщик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

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 для оптимизации трафика и атомарного обновления отдельных полей, особенно для больших ресурсов.