Что означает требование полноты в HTTP-методе PUT?

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

Ответ

Согласно спецификации HTTP, метод PUT предназначен для полного замещения ресурса. Клиент обязан отправить все обязательные и изменяемые поля сущности, даже если обновляется только часть данных.

Почему это важно:

  • Если клиент отправит неполное представление, сервер может интерпретировать отсутствующие поля как намерение установить их в null или удалить.
  • Это может привести к потере данных.

Пример (обновление пользователя):

Исходные данные на сервере:

{
  "id": 1,
  "name": "Иван",
  "email": "ivan@example.com",
  "age": 30
}

PUT-запрос без поля age:

PUT /users/1 HTTP/1.1
Content-Type: application/json

{
  "name": "Новое Имя",
  "email": "new@example.com"
}

Результат: Поле age будет удалено из ресурса.

Решение для частичных обновлений: Используйте метод PATCH, который изменяет только переданные в теле запроса поля.