Ответ
Идемпотентность HTTP-метода означает, что повторный идентичный запрос к серверу будет приводить к тому же состоянию ресурса, что и первоначальный. Другими словами, сколько бы раз вы ни отправили такой запрос, результат будет один и тот же.
Это критически важно для построения надёжных систем: если клиент не получил ответ (например, из-за сбоя сети), он может безопасно повторить идемпотентный запрос.
Идемпотентные методы:
GET
: Запрашивает представление ресурса. Не изменяет состояние.HEAD
: АналогиченGET
, но без тела ответа. Не изменяет состояние.PUT
: Полностью заменяет ресурс по указанному URI. Если ресурс существует, он заменяется; если нет — создаётся. Повторные вызовы с теми же данными дадут тот же результат.DELETE
: Удаляет ресурс. Первый запрос удалит ресурс (и вернёт200 OK
или204 No Content
), а последующие, скорее всего, вернут404 Not Found
. Состояние сервера остаётся неизменным после первого успешного удаления.OPTIONS
: Запрашивает информацию о параметрах соединения для ресурса.
Неидемпотентные методы:
POST
: Обычно используется для создания нового дочернего ресурса. Каждый успешный запросPOST
создаёт новый, уникальный ресурс.- Пример:
POST /users
создаст нового пользователя при каждом вызове.
- Пример:
PATCH
: Вносит частичные изменения в ресурс. Его идемпотентность зависит от операции. Например,PATCH /articles/1 { "views": views + 1 }
неидемпотентен, аPATCH /articles/1 { "status": "published" }
— идемпотентен.