В чём разница между POST, PUT и PATCH в HTTP?

Чем отличаются POST, PUT и PATCH HTTP-методы для работы с ресурсами в REST POST: создание ресурса, операция неидемпотентна PUT: полная замена ресурса, идемпотентная операция PATCH: частичное изменение ресурса,…

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

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

Чем отличаются POST, PUT и PATCH HTTP-методы для работы с ресурсами в REST POST: создание ресурса, операция неидемпотентна PUT: полная замена ресурса, идемпотентная операция PATCH: частичное изменение ресурса, идемпотентность зависит от реализации POST не предполагает передачу полного тела, тогда как PUT заменяет ресурс целиком PATCH обновляет только переданные поля и позволяет сократить объём трафика Метод выбирают в зависимости от цели: создать ресурс, заменить его полностью или изменить отдельные данные Корректный выбор метода делает семантику API понятнее и повышает стабильность

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

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

Чем отличаются POST, PUT и PATCH

  • HTTP-методы для работы с ресурсами в REST
  • POST: создание ресурса, операция неидемпотентна
  • PUT: полная замена ресурса, идемпотентная операция
  • PATCH: частичное изменение ресурса, идемпотентность зависит от реализации
  • POST не предполагает передачу полного тела, тогда как PUT заменяет ресурс целиком
  • PATCH обновляет только переданные поля и позволяет сократить объём трафика
  • Метод выбирают в зависимости от цели: создать ресурс, заменить его полностью или изменить отдельные данные
  • Корректный выбор метода делает семантику API понятнее и повышает стабильность

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

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

POST, PUT и PATCH — HTTP-методы, с помощью которых клиент передаёт данные серверу. Однако каждый из них имеет собственную семантику и используется для своего сценария работы с ресурсами.

  • POST обычно создаёт новый ресурс либо запускает действие, которое не обязано быть идемпотентным.
  • PUT предназначен для полной замены существующего ресурса или его создания по заданному URI; такая операция является идемпотентной.
  • PATCH используется для частичного изменения ресурса: обновляются только перечисленные поля. Такой запрос также обычно идемпотентен, однако это зависит от конкретной реализации.

Главные особенности

  • POST выбирают, когда клиент передаёт данные для создания нового объекта — например, отправляет форму или создаёт заявку. Результат не гарантирует идемпотентность: повторная отправка может привести к появлению нескольких одинаковых копий.
  • С помощью PUT целевой ресурс полностью заменяется новым представлением. Если ресурс уже существует, он замещается целиком; если его ещё нет, сервер создаёт его по указанному URI. Операция идемпотентна: повторение того же запроса не изменит результат после первого выполнения.
  • PATCH подходит, когда требуется изменить только отдельные поля, не отправляя и не заменяя весь объект. Согласно стандарту (RFC 5789), запрос может содержать набор изменений, например в формате JSON Patch. Реализация PATCH иногда сложнее, зато уменьшается объём передаваемых и обрабатываемых данных.

Применение на практике

В RESTful API, создаваемых с использованием React 18 и современных backend-фреймворков, таких как FastAPI и Spring Boot, обычно действуют следующие правила:

  • Новые сущности создают через POST, например, /api/users с телом, содержащим данные нового пользователя.
  • Для полной замены ресурса используют PUT, например, /api/users/123 с обновлённым профилем целиком.
  • Когда нужно изменить лишь часть данных — например, только email без повторной отправки всего профиля — применяют PATCH к тому же URI.

Знание различий между этими методами позволяет проектировать API с корректной семантикой, а также делает поведение клиентов и серверов более предсказуемым.

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

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

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

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