Какие HTTP-методы используются для изменения ресурса в REST API и в чем их различие?

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

Ответ

Для изменения данных в REST API используются методы PUT и PATCH. Их ключевое отличие — в объеме изменяемых данных.

PUT

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

{
  "name": "Alice",
  "email": "alice@example.com",
  "age": 30
}

PATCH

  • Частичное обновление ресурса. Клиент отправляет только изменяемые поля.
  • Остальные поля ресурса остаются нетронутыми.
  • Не всегда идемпотентен, зависит от реализации.
PATCH /api/users/123 HTTP/1.1
Content-Type: application/json

{
  "age": 31
}

Выбор метода:

  • Используйте PUT, когда клиент управляет всем состоянием ресурса (например, редактирование профиля через форму).
  • Используйте PATCH для оптимизации трафика и обновления отдельных полей (например, смена статуса или настройки).

⚠️ Важно: Точная семантика методов может зависеть от реализации сервера. Всегда сверяйтесь с документацией конкретного API.