Чем PUT отличается от PATCH в REST по семантике и реализации на практике?

Чем отличаются PUT и PATCH в REST Семантика REST: PUT — полная замена ресурса и его текущего состояния

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

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

Чем отличаются PUT и PATCH в REST Семантика REST: PUT — полная замена ресурса и его текущего состояния

Подробный разбор

Ответ с пояснениями

Чем отличаются PUT и PATCH в REST

  • Семантика REST:
  • PUT — полная замена ресурса и его текущего состояния

PATCH — частичное обновление с изменением отдельных полей

Содержимое запроса:

  • PUT должен содержать объект целиком

PATCH передаёт только поля, которые были изменены

Идемпотентность:

  • PUT является идемпотентным: повторение запроса приводит к тому же результату

PATCH не во всех случаях идемпотентен — это определяется содержанием патча

Техническая реализация:

  • PUT нередко полностью обновляет запись в БД

PATCH применяет изменения выборочно, что позволяет сократить объём трафика

Когда применять:

  • PUT подходит, если клиент располагает полным представлением ресурса

PATCH используют, когда требуется изменить несколько значений без отправки всего объекта

Валидация и обработка ошибок:

  • PUT проверяет структуру ресурса полностью

PATCH валидирует только те поля, которые меняются

Пример:

  • PUT /user/1 с полным JSON
  • PATCH /user/1 с { "email": "new@example.com" }

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

Развёрнутый ответ

Основной ответ

В REST методы PUT и PATCH применяются для обновления ресурсов, однако смысл выполняемой операции у них различается. PUT используется для полной замены ресурса: сервер ожидает от клиента объект целиком, после чего заменяет существующее состояние переданными данными. PATCH, напротив, предназначен для частичных изменений. В таком запросе клиент передаёт лишь обновляемые поля или операции, а сервер применяет их к уже существующему объекту.

Основные различия

  • PUT — идемпотентный метод, выполняющий замену всего ресурса. Если несколько раз отправить одинаковый PUT, итоговое состояние останется тем же. Такой вариант удобен, когда клиент располагает полной моделью объекта и должен обновить её целиком.
  • PATCH не обязательно идемпотентен: поведение определяется реализацией и видом используемых операций, например JSON Patch или Merge Patch. Метод передаёт только данные либо инструкции для изменения, поэтому помогает уменьшить сетевой трафик и упростить точечные обновления.
  • На практике PUT требует передать в теле запроса сущность полностью, тогда как PATCH содержит только изменения. Чтобы сменить email пользователя, при использовании PUT придётся отправить все его поля, а при PATCH достаточно передать поле email.

Практическое применение

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

Практика в реальном времени

Подготовьтесь к следующему собеседованию

Interview Boost учитывает вакансию, резюме и технологии и помогает сформулировать ответ прямо во время интервью.

Начать подготовку