каталог
- Интерфейс идемпотентность значение
- Интерфейс соответствует идемпотентности какой использовать
- Такие, как силы и безопасности методов HTTP
- Как спроектировать интерфейс соответствует идемпотентности
- Написанная в последний
Интерфейс идемпотентность значение
Идемпотентности изначально смысл в математике, является выражением N-го преобразования с результатами линейного преобразования того же самого.
RESTful API в идемпотентности относится вызвать метод один или N раз влияют на результат ресурсов генерироваться те же, требуют особого внимания являются: идемпотентность здесь относится к влиянию результатов , полученных ресурсов, вместо вызова метода HTTP возвращает результат.
Например, метод GET RESTful API информация ресурса запроса, не будет иметь влияние на ресурсах, поэтому в соответствии с идемпотентностью, но результаты каждого вызова GET метод возвращает могут отличаться (вероятно , свойством ресурсов GET метод перед вызовом других методов были изменены).
В самом деле, API идемпотентная в распределенной архитектуре не только для RESTful интерфейса, но интерфейс подходит для всех типов, для того , чтобы обеспечить при вызове один или N раз интерфейсы влияют на результат ресурсов одинаковы.
Интерфейс соответствует идемпотентности какой использовать
Интерфейс Идемпотентность гарантирует , что независимо от воздействия один или N раз для ресурсов вызовов одинаковы, что в некоторых случаях очень полезно.
Например, есть такой метод интерфейса: плата (длинный счет, внутр деньги ), метод , используемый для банковских платежей по дебетовым картам, параметры учетной записи для учетной записи ID, деньги вычитаются из суммы денежных средств , необходимой. Когда пользователь нажимает на кнопку , чтобы оплатить из Интернета, необходимо вычесть соответствующие цены на сырьевые товары от назначенного счета в логике реализации методы. Если операция оплаты была выполнена успешно, но по какой - то причине сообщение ответа клиенту не вернулся, на этот раз пользовательский опыт, вероятно, не будет успешной оплаты, если снова заплатил в это время нажатия на кнопку, а затем еще раз , чтобы выполнить метод результаты могут привести пользователей покупать только один элемент, он взял два раза деньги, которые, конечно , является необоснованным. Весь процесс , как показано ниже:
Конечно, приведенный выше пример сценария, пользователь, чтобы избежать двойных платежей, могут быть решены с помощью других средств, таких как: распределенной транзакции, или подсказать пользователю , чтобы дать советы по статусу оплаты и так далее.
Если, однако, введение распределенной транзакции, это приведет сложность реализации, но и будет влиять на производительности интерфейса, а также принять незамедлительный образ , а не на сто процентов уверены , что пользователь не дублирует платежи, есть определенные риски. И если интерфейс соответствует идемпотентности, а именно: заказ на те же оплаты, выполняется ли это один или несколько платежей, чтобы убедиться , что обе стороны службы будет пряжкой первого абзаца, то ни необходимость введения сложности распределенных транзакций, но и от решить проблему дублирующих платежей в основном, это интерфейс соответствует идемпотентности стоимости.
В целом, интерфейс в соответствии с идемпотенту может уменьшить сложность внедрения системы, а также для обеспечения согласованности государственных ресурсов.
Такие, как силы и безопасности методов HTTP
Дизайн интерфейса , используемый на природе протокол HTTP - методе успокоительного стиля, таким образом, сила успокоительной методы интерфейса и т.п. относится идемпотентный метод HTTP.
Общие методы HTTP: OPTIONS (для получения информации о сервере), HEAD (запрос информации заголовка ресурса), GET (доступ к ресурсам), POST (создать ресурс), PUT (обновление ресурс всей информацию), PATCH (информационный раздел обновленного ресурса), DELETE (удаление ресурсов). Таким образом, эти методы идемпотентного HTTP и какие из него?
В капельном идемпотентном Кроме того, средства безопасности делают метод HTTP для получения модифицированных ресурсов.
Ниже обычно используемый метод мощности , такие как HTTP и сводка безопасности:
HTTP имя метода | Будь идемпотенту | Безопасно |
---|---|---|
ОПЦИИ | и | и |
ГОЛОВА | и | и |
ПОЛУЧИТЬ | и | и |
ПОЛОЖИЛ | и | N |
УДАЛЯТЬ | и | N |
СООБЩЕНИЕ | N | N |
PATCH | N | N |
Как видно из приведенной выше таблицы, идемпотентная и способ HTTP-безопасность не является той же концепции, следующие идемпотентны и интерпретация соответствующего способа защиты:
- OPTIONS методы часто используются, чтобы получить информацию о сервере и не будет влиять на ресурсы, не будут изменены ресурсы, поэтому он является тождественной безопасен; метод OPTIONS является наиболее распространенным сценарием в кросс-домене запрашивает браузер, Если браузер запущен API (будь то метод GET или метод POST) а доступ междоменного, а затем отправить реальный бизнес ПОЛУЧИТЬ или метод POST отправляет метод OPTIONS до получения информации от сервера, информация, полученная с сервера возвращается знаете ли запрос для поддержки доступа междоменное для того, чтобы решить, является ли следующий шаг, чтобы успешно отправить запрос реальный сервис.
- Метод ГОЛОВЫ информации заголовка, запрос ресурсов не повлияет на ресурсы, а также не ресурсы будут изменены таким образом, что она является тождественным безопасен.
- GET метода используются для получения информации о ресурсах, хотя это может привести к Возвращается не то же самое каждый раз, но сам метод GET не оказывает влияние на ресурсах, это не изменит к ресурсам успокоительной семантики в методе GET, поэтому он является тождественным, а также безопасность.
- Метод PUT представляет собой общее количество ресурсов для обновления, поэтому вызов однократно или N раз результаты одинаковы, так что идемпотентна, но не безопасно в успокоительной в семантике.
- Результаты УДАЛИТЬ метод для удаления ресурсов, вызывая один или N раз одни и те же, так идемпотентна, но не безопасно.
- Метод POST представляет новый ресурс в успокоительной семантике, по-видимому, вызывается один раз с результатами Призывая N раз разные (назовут раз новый один ресурс, вызов N раза новыми N ресурсы), и, следовательно, не идемпотентен, а не быть в безопасности ,
- Метод PATCH успокоительные показывает локальные обновления в семантических ресурсах, мы не можем гарантировать те же результаты, вызываемые после называют N разы (например: обновленный ресурс как атрибут числа вызовов в различных вариациях), так что не идемпотентен в то же время это не безопасно.
Как спроектировать интерфейс соответствует идемпотентности
Основной дизайн интерфейса является обеспечение питания и другие интерфейсы называться либо один или N раз, влияние его ресурсов одинаковы.
Может быть видно из приведенных выше методов HTTP резюме идемпотентными и метод PATCH POST протокола HTTP не идемпотентная характер (но мы часто используем их в RESTful интерфейс), то это значит , что не может быть POST PATCH и методы предназначены для идемпотентности интерфейсов этого? Ответ, конечно , нет. В приведенном выше примере, порядок ID также может быть использован в качестве одного параметров методов, таких как: платить (длинный счет, ИНТ денег , долго заказ), поэтому убедитесь , что сервер будет выплачен только один раз заказа (номер заказа является глобально уникальным) , независимо от того, какой метод вызывается один раз или N раз результаты являются такими же, она обеспечивает интерфейс идемпотентности. Конечно, номер заказа , который не находится в месте, интерфейс может работать , чтобы генерировать глобально уникальный идентификатор номера процесса, номер процесса и идентификатор в качестве параметра одного из методов, так что номер процесса , чтобы гарантировать , что сервер будет выполняться только один раз ID обеспечить интерфейс идемпотентность.
Соответствие идемпотентная потока интерфейса вызова описывается следующим образом :
Написанная в последний
Хотя он предназначен для удовлетворения интерфейса идемпотентности в некоторых случаях могут уменьшить сложность системы (такие как: внедрение распределенной транзакции не может), но интерфейс не в состоянии решить эту проблему идемпотентности во всех случаях, когда это необходимо еще нам нужно ввести такую структуру распределенной обработки транзакций. Мы не приведи интерфейс идемпотентности как универсальное решение, но мы попытаемся рассмотреть в соответствии с лечением идемпотентности является очень ценным при разработке интерфейса.
[Ссылка]
http://blog.720ui.com/2016/restful_idempotent/ как понять RESTful идемпотентность
https://www.cnblogs.com/weidagang2046/archive/2011/06/04/idempotence.html понимают силу HTTP и другие сексуальные
https://sofish.github.io/restcookbook/http%20methods/idempotency/ RESTful руководство