Является ли HTTP-метод POST идемпотентным?

«Является ли HTTP-метод POST идемпотентным?» — вопрос из категории API тестирование, который задают на 10% собеседований QA Тестировщик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Нет, HTTP-метод POST не является идемпотентным. Это его ключевое отличие от идемпотентных методов (GET, PUT, DELETE).

Почему: Основная семантика POST — создание нового ресурса. Каждый идентичный запрос POST потенциально создаёт новый ресурс, изменяя состояние сервера.

Пример:

POST /api/orders HTTP/1.1
Host: example.com
Content-Type: application/json

{"productId": 789, "quantity": 2}

Повторная отправка этого запроса, скорее всего, создаст второй, отдельный заказ с теми же данными, но новым уникальным ID. Это явное изменение состояния системы.

Важное исключение (идемпотентный POST): Сервер может реализовать механизм идемпотентных ключей (Idempotency-Key). Клиент отправляет уникальный ключ с запросом, и сервер гарантирует, что повторные запросы с тем же ключом не приведут к созданию дубликатов, возвращая результат первого успешного запроса.