Разница между идемпотентными и безопасными методами HTTP в API REST - PullRequest
2 голосов
/ 24 июня 2019

Как метод PUT может быть идемпотентным, но небезопасным? Может кто-нибудь объяснить это?

HTTP Method   Idempotent      Safe
OPTIONS        yes            yes
GET            yes            yes
HEAD           yes            yes
PUT            yes            no
POST           no             no
DELETE         yes            no
PATCH          no             no

Ответы [ 2 ]

2 голосов
/ 24 июня 2019

Безопасный метод ничего не меняет внутренне (ресурсы)

Безопасные методы - это методы, которые можно кэшировать с предварительной выборкой без каких-либо последствий для ресурса.

Идемпотентный метод ничего не меняет внешне (ответ)

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

1 голос
/ 24 июня 2019

Это все в спецификации:

4.2.2.Идемпотентные методы

Метод запроса считается «идемпотентным», если предполагаемое воздействие на сервер нескольких идентичных запросов с помощью этого метода такое же, как и для одного такого запроса.Из методов запроса, определенных в данной спецификации, методы PUT, DELETE и safe request являются идемпотентными.

Как и определение safe, свойство идемпотента применяется только к тому, что было запрошено пользователем;сервер может регистрировать каждый запрос отдельно, сохранять историю контроля версий или реализовывать другие неидемпотентные побочные эффекты для каждого идемпотентного запроса.

Идемпотентные методы различаются, поскольку запрос может повторяться автоматически в случае сбоя связипроисходит до того, как клиент сможет прочитать ответ сервера.Например, если клиент отправляет запрос PUT и базовое соединение закрывается до получения какого-либо ответа, тогда клиент может установить новое соединение и повторить идемпотентный запрос.Он знает, что повторение запроса будет иметь тот же предполагаемый эффект, даже если исходный запрос был выполнен успешно, хотя ответ может отличаться.

(https://greenbytes.de/tech/webdav/rfc7231.html#idempotent.methods)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...