Ответ
Идемпотентный HTTP-метод — это метод, при котором многократное выполнение одного и того же запроса с одними и теми же данными имеет тот же эффект, что и однократное выполнение. Идемпотентность критична для надежности сетевых взаимодействий, особенно при повторах запросов из-за сбоев сети.
Ключевая идея: "N > 0 идентичных запросов = эффект от одного запроса".
Идемпотентные методы (по спецификации HTTP/1.1):
GETHEADPUTDELETEOPTIONSTRACE
Неидемпотентный метод: POST (каждый запрос может создать новый ресурс).
Практические примеры:
PUT /api/users/456 HTTP/1.1
Host: example.com
Content-Type: application/json
{"name": "Alice"}
Повторная отправка этого PUT-запроса не создаст нового пользователя, а будет многократно обновлять одного и того же пользователя с id=456. Это и есть идемпотентность.
DELETE /api/files/789 HTTP/1.1
Host: example.com
Первый вызов DELETE удалит файл и вернет статус 200 OK или 204 No Content. Последующие вызовы того же DELETE часто возвращают 404 Not Found, но состояние сервера (отсутствие файла) не меняется — метод остается идемпотентным.
Важно: Идемпотентность гарантируется на уровне логики приложения. Серверная реализация должна обеспечивать это свойство.