Почему метод запроса HTTP PATCH не идемпотентен - PullRequest
0 голосов
/ 12 июня 2018

В HTTP Spec указано, что PATCH является not идемпотентом.

Основное определение идемпотента:

Идемпотентный метод HTTPэто HTTP-метод, который можно вызывать много раз без разных результатоввсегда подразумевает обновление username пользователя 1 до dummyUser.

И это почти то же самое для любого PATCH запроса на обновление 1 или многих атрибутов любого ресурса.

Тогда почему в спецификации HTTP указано, что PATCH является not идемпотентом?

1 Ответ

0 голосов
/ 12 июня 2018

Во-первых, важно уточнить, что Idempotent: No не означает, что оно никогда, никогда не идемпотентно, это означает, что оно не обязательно идемпотент, то есть не обязательно.

Таким образом, в вашем примере он кажется идемпотентным, поскольку состояние ресурса идентично после нескольких повторных вызовов одного и того же PATCH запроса.

Но рассмотрим гипотетический запрос PATCH, подобный следующему:

PATCH /users/1

successful_logins++

Этот запрос увеличивает атрибут пользователя successful_logins на единицу при каждом вызове.Как видите, он не идемпотентен, поскольку последовательные запросы вызывают дополнительную модификацию ресурса.

Это в отличие от метода PUT, который должен содержать абсолютные значения всех атрибутов ресурса.

...