Идемпотентность HTTP-методов простыми словами 🔄
Подписаться на нельзяграм и сам пост
https://www.instagram.com/p/DbP7Ui5DG_k/?igsh=MWc2N29oMndvczR6Mw==
Термин предложил математик Бенджамин Пирс. В IT это свойство операции, при котором повторное выполнение даёт тот же результат, что и однократное, не изменяя состояние сервера.
🏠 Простые примеры:
✅ Выключатель света: нажал 10 раз — свет всё равно выключен.
✅ Кнопка лифта: нажал 5 раз — лифт приедет 1 раз.
❌ Корзина товаров: нажал «добавить» 5 раз — получил 5 пицц (не идемпотентно!).
Как это работает в REST:
🔍 GET, HEAD, OPTIONS, TRACE
Безопасны и идемпотентны. Они только читают данные, не меняя состояние сервера.
📝 PUT (Обновление)
По стандарту идемпотентен: 10 запросов PUT /users/123 просто 10 раз обновят имя на «John».
⚠️ Нюанс: На некоторых платформах (например, «Викунья») PUT может создавать НОВЫЙ объект задачи/проекта при каждом запросе, если не передан ID. В этом случае он теряет идемпотентность!
🗑️ DELETE (Удаление)
Идемпотентен, но с подвохом в ответе:
1️⃣ Первый запрос: вернет 200 OK или 204 No Content (ресурс удален).
2️⃣ Второй запрос: вернет 404 Not Found (ресурса уже нет).
💡 Состояние сервера одинаковое (удалено), но статус-код меняется. Это нормально!
🛡️ POST (Создание)
По стандарту НЕ идемпотентен (создает дубликаты).
💡 Вынужденная идемпотентность: POST можно сделать идемпотентным программно. Например, при создании пользователя («Викунья») повторный запрос с тем же email не создаст дубль, а вернет ошибку 409 Conflict или данные существующего юзера.
Тест-кейсы, коллекцию и шаблоны по ссылке
https://t.me/protestinginfo/5158
✍️ А на твоих проектах POST делают идемпотентным? Делись опытом 👇
#QA #тестированиеПО#идемпотентность #собеседование #карьераВIT
Post #5271
1.45K






- 👍 18
- ❤ 9
- 🔥 5