HTTP-методы обновления ресурсов в REST PUT: полностью заменяет ресурс необходимо передать весь ресурс целиком идемпотентен: повторное выполнение PUT не изменяет итоговый результат PATCH: изменяет ресурс частично передаёт только поля, которые были изменены не всегда идемпотентен — это определяется реализацией PUT используют для полной замены, а PATCH — для частичного обновления PATCH сокращает объём трафика и делает обновление эффективнее
В чём разница между PUT и PATCH при обновлении ресурсов?
HTTP-методы обновления ресурсов в REST PUT: полностью заменяет ресурс необходимо передать весь ресурс целиком идемпотентен: повторное выполнение PUT не изменяет итоговый результат PATCH: изменяет ресурс частично…
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
В чём разница между PUT и PATCH при обновлении ресурсов?
- HTTP-методы обновления ресурсов в REST
- PUT: полностью заменяет ресурс
- необходимо передать весь ресурс целиком
- идемпотентен: повторное выполнение PUT не изменяет итоговый результат
- PATCH: изменяет ресурс частично
- передаёт только поля, которые были изменены
- не всегда идемпотентен — это определяется реализацией
- PUT используют для полной замены, а PATCH — для частичного обновления
- PATCH сокращает объём трафика и делает обновление эффективнее
Итог: PUT выполняет полное обновление ресурса, а PATCH — частичное; методы отличаются семантикой и сценариями применения.
Подробный ответ
Основной ответ
PUT и PATCH — это HTTP-методы обновления ресурсов, однако их семантика и область применения различаются. При использовании PUT ресурс заменяется полностью: клиент передаёт серверу полное представление объекта, после чего оно становится новым содержимым существующего ресурса. Метод PATCH предназначен для частичных изменений: запрос содержит только поля, которые требуется обновить, тогда как остальные данные сохраняются без изменений.
Ключевые моменты
- PUT является идемпотентным методом: если несколько раз отправить один и тот же запрос с неизменным телом, результат останется одинаковым, поскольку ресурс каждый раз заменяется полностью.
- PATCH не обязательно идемпотентен — это зависит от используемого патча, например JSON Patch или Merge Patch. Обычно его выбирают, чтобы сократить трафик и снизить вероятность непреднамеренной перезаписи данных.
- В REST API при работе с PUT обычно передают весь объект, в том числе поля, которые не менялись. Для PATCH достаточно указать изменённые поля, поэтому этот метод удобнее для частичного обновления ресурса.
Практический контекст
В современных системах и API, включая решения на основе OpenAPI или GraphQL, PATCH нередко применяют для оптимизации обновлений и сокращения объёма передаваемых данных. PUT подходит для ситуаций, когда необходимо строго контролировать целостность объекта и его состояние целиком. Например, в React 18 при работе с REST API для редактирования профиля пользователя рационально использовать PATCH: чтобы изменить email или имя, не требуется отправлять весь профиль.