Выработать на природе идемпотентного RESTful API

каталог

Интерфейс идемпотентность значение

Идемпотентности изначально смысл в математике, является выражением 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 руководство

рекомендация

отwww.cnblogs.com/nuccch/p/11261258.html