2016-09-06 1 views
0

Я создаю новый API на основе REST, который позволяет клиенту запрашивать и получать статус транзакции (которую они отправили или создали ранее). Его способность к клиенту запрашивать и получать статус транзакции. Сама транзакция может изменить свое состояние на протяжении своего жизненного цикла, то есть первоначально его утвердить, позже оно может быть отменено и т. Д. Из-за бэк-офиса или других операций.Идемпотентный API?

Когда клиент выполнит вызов этого API запросов, в зависимости от того, когда они совершают звонок в течение жизненного цикла транзакции, они получат детали транзакций и историю состояний (одобренные, отмененные и т.д). Ответ API может варьироваться в зависимости от того, когда выполняется вызов. Соответствует ли этот API API-интерфейсу «Idempotent»?

Спасибо заранее!

+0

Я не уверен, что вы спрашиваете, можете ли вы уточнить? Что означает «Идемпотентный API»? – inf3rno

+0

Я реализую API, который является поисковым или поисковым API (только для чтения) для транзакций. Но ответ, который он возвращает, может варьироваться в зависимости от изменения состояния транзакции. Таким образом, поля полезной нагрузки могут отличаться от каждого вызова. Означает ли это, что этот API является идемпотентным? – AKon

+0

Afaik. этот термин не относится к API, по крайней мере, я читал только об идемпотентных методах или операциях. Да, если у вас есть только простое ПОЛУЧЕНИЕ, то это, безусловно, идемпотент. http://labs.unacast.com/2016/02/25/on-idempotency-in-distributed-rest-apis/ – inf3rno

ответ

1

Он делает. В соответствии с RFC 2616: 9.1.2 Idempotent Methods:

Методы могут также обладать свойством «идемпотентности» в том, что (в стороне от проблем ошибок или истечения срока действия) в побочных эффекты N> 0 идентичных запросов является таким же, как для одного запроса. Методы GET, HEAD, PUT и DELETE делятся этим свойством. Кроме того, методы OPTIONS и TRACE НЕ ДОЛЖНЫ иметь побочные эффекты, и поэтому по своей сути идемпотентны.

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

+0

Спасибо за ваш быстрый ответ. Тот факт, что полезная нагрузка ответа может меняться от каждого вызова (из-за изменения состояния транзакции), не имеет значения для права Идемпотентности? – AKon

Смежные вопросы