К списку
HTTP, REST и APIJuniorСкрининг с HR

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

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

Частичное обновление с помощью PUT — это практическое отклонение от стандарта, где PUT заменяет весь ресурс целиком. В реальности некоторые API позволяют обновлять часть данных через PUT, но официально для этого существует метод PATCH.

Развёрнуто

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

Частичность PUT означает, что вместо замены всего ресурса можно обновить только отдельные его поля. Однако по стандарту HTTP метод PUT должен переписывать весь ресурс целиком, а частичные изменения корректнее выполнять через PATCH.


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

По спецификации HTTP, метод PUT предназначен для полной замены существующего ресурса или создания нового по указанному URI. Это значит, что если в теле запроса отсутствуют некоторые поля, они должны быть удалены или сброшены в ресурсе.

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

Метод Поведение Назначение
PUT Полная замена ресурса Создание или замена ресурса
PATCH Частичное обновление отдельных полей Модификация части ресурса

Пример

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

{
  "name": "Иван Иванов"
}

В стандарте такой запрос должен заменить весь объект пользователя, сохранив только поле name. Если API поддерживает частичность PUT, то обновится только имя, а остальные поля останутся без изменений.

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

  • Метод PUT по стандарту заменяет ресурс целиком, а не частично.
  • Частичное обновление корректно реализуется через метод PATCH.
  • Использование частичного PUT может создавать неоднозначность и ошибки.
  • При тестировании API важно уточнять, как именно реализован метод PUT.
  • Знание различий между PUT и PATCH помогает правильно формировать запросы и интерпретировать ответы.

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