Как сервер обрабатывает 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