К списку
HTTP, REST и APIMiddleТехническое

Как сервер обрабатывает PUT-запрос при изменении части ресурса

Краткий ответ

PUT-запрос полностью заменяет ресурс на данные из тела запроса. Если некоторые поля отсутствуют, сервер может их удалить или установить по умолчанию в зависимости от реализации.

Развёрнуто

Краткий ответ

При использовании PUT для обновления части ресурса сервер принимает тело запроса как новое полное состояние ресурса. Отсутствующие в теле поля часто удаляются или заменяются значениями по умолчанию.


Как это работает

Метод PUT в HTTP предназначен для полной замены ресурса по указанному URI. Это означает, что данные, отправленные в теле запроса, рассматриваются как новая полная версия ресурса. Если в теле отсутствуют некоторые поля, сервер не обязательно сохраняет их из предыдущей версии — вместо этого такие поля могут быть удалены или инициализированы заново.

Это отличается от метода PATCH, который предназначен для частичного обновления ресурса, сохраняя неуказанные поля без изменений.

Метод Поведение при обновлении Сохранение отсутствующих полей
PUT Полная замена ресурса Нет, поля удаляются/заменяются
PATCH Частичное обновление Да, отсутствующие поля сохраняются

Пример

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

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

Если изначально у пользователя были дополнительные поля, например "age" или "address", и они не включены в тело запроса, сервер может удалить эти поля или установить их в значения по умолчанию, так как PUT заменяет весь ресурс.

Что важно знать на собеседовании

  • PUT предполагает замену всего ресурса, а не частичное обновление.
  • Отсутствие полей в теле PUT-запроса может привести к их удалению на сервере.
  • Для частичных изменений используется метод PATCH.
  • Реализация обработки PUT может варьироваться в зависимости от сервера и API.
  • Тестирование PUT требует проверки, что неуказанные поля корректно обрабатываются.

Тема: HTTP, REST и API | Уровень: middle