Ответ
Идемпотентный HTTP-метод — это метод, многократный вызов которого с одними и теми же данными приводит к одинаковому результату и не изменяет состояние системы после первого успешного запроса.
Идемпотентные методы:
- GET — получение ресурса. Повторные запросы не влияют на сервер.
- HEAD — аналогичен GET, но без тела ответа.
- PUT — создание или полное обновление ресурса по известному URI. Повторный вызов с теми же данными оставляет ресурс в том же состоянии.
- DELETE — удаление ресурса. После первого успешного удаления последующие запросы обычно возвращают
404 Not Foundили410 Gone, что также является идемпотентным результатом. - OPTIONS и TRACE — безопасные методы, не изменяющие состояние.
Неидемпотентный метод:
- POST — создание ресурса. Каждый вызов обычно создает новый объект, изменяя состояние системы.
Пример идемпотентности PUT:
PUT /api/users/123 HTTP/1.1
Content-Type: application/json
{"name": "Alice", "role": "admin"}
Повторная отправка этого же запроса не создаст нового пользователя и не изменит результат — пользователь 123 будет иметь имя "Alice" и роль "admin".