К списку
HTTP, REST и APIMiddleТехническое

Что происходит при многократном повторении HTTP PUT запроса

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

HTTP метод PUT является идемпотентным, поэтому повторные запросы с одинаковыми данными не изменяют состояние ресурса после первого успешного обновления. Это гарантирует стабильность и предсказуемость результата.

Развёрнуто

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

Метод HTTP PUT гарантирует идемпотентность: повторные запросы с одинаковым содержимым приводят к одному и тому же состоянию ресурса. Следовательно, отправка PUT несколько раз подряд не изменит ресурс после первого успешного обновления.


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

PUT — это метод для полного обновления ресурса на сервере. В отличие от POST, который может создавать новые ресурсы или вызывать дополнительные эффекты, PUT обновляет или создает ресурс по указанному URI с заданным содержимым.

Идемпотентность означает, что выполнение одного и того же запроса несколько раз подряд не изменит результат после первого выполнения. Это свойство важно для надёжности сетевых операций, потому что повторные запросы (например, из-за таймаута или ошибки) не приведут к непредсказуемым изменениям.

Метод HTTP Идемпотентность Поведение при повторении запроса
PUT Да Один и тот же ресурс будет обновлён до одинакового состояния
POST Нет Может создавать новые ресурсы или изменять состояние несколько раз

Пример

PUT /api/users/123 HTTP/1.1
Host: example.com
Content-Type: application/json

{
  "name": "Иван Иванов",
  "email": "ivan@example.com"
}

Если этот запрос отправить несколько раз подряд, пользователь с ID 123 будет иметь одинаковые имя и email после каждого запроса. Никаких дополнительных изменений не произойдет.

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

  • HTTP PUT метод является идемпотентным, что гарантирует стабильность состояния ресурса.
  • Повторное выполнение PUT запроса с одинаковыми данными не приводит к ошибкам и не изменяет ресурс.
  • Идемпотентность упрощает обработку сетевых ошибок и повторных попыток.
  • В отличие от PUT, POST не является идемпотентным и может создавать новые ресурсы при повторении.
  • В тестировании важно проверять, что API корректно реализует идемпотентность PUT-запросов.

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