Что такое HTTP-метод PATCH?

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

Ответ

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

Пример запроса PATCH:

PATCH /api/users/123 HTTP/1.1
Host: example.com
Content-Type: application/json

{
  "email": "updated@example.com",
  "age": 30
}

Этот запрос обновит только поля email и age у пользователя с ID 123, оставив остальные данные неизменными.

Ключевые аспекты и best practices:

  • Идемпотентность: PATCH не обязан быть идемпотентным (в отличие от PUT), но рекомендуется проектировать операции так, чтобы повторение одного и того же запроса не вызывало побочных эффектов.
  • Форматы изменений: Сервер должен договориться с клиентом о формате описания изменений. Чаще всего используется:
    1. JSON Merge Patch (стандартный JSON, где null означает удаление поля).
    2. JSON Patch (формат RFC 6902 с операциями add, remove, replace).
  • Семантика: Всегда документируйте, какие поля ресурса можно обновлять через PATCH.
  • Безопасность: Сервер должен валидировать частичные обновления, чтобы не допустить некорректного состояния ресурса.

Почему используют PATCH? Он уменьшает объем передаваемых данных и сетевой трафик, особенно при обновлении больших объектов.