Почему PATCH является идемпотентным

«Почему PATCH является идемпотентным» — вопрос из категории API и интеграции, который задают на 27% собеседований Системный Аналитик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

PATCH не всегда идемпотентен. Идемпотентность зависит от реализации операции. Например, если PATCH применяет изменения по определённым правилам (например, заменяет значение поля), то он идемпотентен. Однако, если PATCH инкрементирует значение (например, {"count": +1}), то повторный вызов изменит состояние, и операция не будет идемпотентной.

Пример идемпотентного PATCH:

PATCH /users/1
{
  "email": "new@example.com"
}

Повторные вызовы не изменят результат после первого применения.

Пример неидемпотентного PATCH:

PATCH /users/1
{
  "balance": {"increment": 100}
}

Каждый вызов увеличит баланс на 100.