Ответ
Операция является идемпотентной, если её многократное повторение приводит к тому же результату и состоянию на сервере, что и однократное выполнение.
Идемпотентные методы:
GET,HEAD,OPTIONS,TRACE: Считаются "безопасными", так как предназначены только для чтения данных и не должны изменять состояние сервера.PUT: Полностью заменяет ресурс. Повторный запрос с теми же данными не изменит итоговое состояние ресурса.DELETE: Удаляет ресурс. Первый запрос его удаляет, а все последующие будут возвращать ошибку (например,404 Not Found), но состояние системы больше меняться не будет.
Неидемпотентные методы:
POST: Обычно используется для создания нового ресурса. Каждый успешный вызов может создать новую сущность с уникальным ID.PATCH: Частично обновляет ресурс. Повторное применение операции, например, добавления комментария, изменит состояние несколько раз.
Практический пример:
PUT /users/123с телом{"name": "Alex"}— идемпотентно. Сколько бы раз вы ни отправили этот запрос, у пользователя с ID 123 имя будет "Alex".POST /usersс телом{"name": "Alex"}— неидемпотентно. Каждый вызов создаст нового пользователя.
Важно: Идемпотентность — это свойство семантики метода, а не гарантия. Неправильная реализация на стороне сервера может нарушить это свойство (например, если GET-запрос будет содержать логику изменения данных).