Во-первых, важно уточнить, что Idempotent: No
не означает, что оно никогда, никогда не идемпотентно, это означает, что оно не обязательно идемпотент, то есть не обязательно.
Таким образом, в вашем примере он кажется идемпотентным, поскольку состояние ресурса идентично после нескольких повторных вызовов одного и того же PATCH
запроса.
Но рассмотрим гипотетический запрос PATCH
, подобный следующему:
PATCH /users/1
successful_logins++
Этот запрос увеличивает атрибут пользователя successful_logins
на единицу при каждом вызове.Как видите, он не идемпотентен, поскольку последовательные запросы вызывают дополнительную модификацию ресурса.
Это в отличие от метода PUT
, который должен содержать абсолютные значения всех атрибутов ресурса.