В простом случае (без распределенных ресурсов) вы можете рассматривать транзакцию как ресурс, где процесс ее создания достигает конечной цели.
Таким образом, для перевода между <url-base>/account/a
и <url-base>/account/b
вы можете отправить следующее в <url-base>/transfer
.
<transfer>
<from><url-base>/account/a</from>
<to><url-base>/account/b</to>
<amount>50</amount>
</transfer>
Это создаст новый ресурс передачи и вернет новый URL перевода - например, <url-base>/transfer/256
.
В момент успешной публикации на сервере выполняется «реальная» транзакция, а сумма удаляется с одного аккаунта и добавляется к другому.
Это, однако, не распространяется на распределенную транзакцию (если, скажем, «a» хранится в одном банке за одной службой, а «b» - в другом банке за другой службой) - за исключением того, чтобы сказать «попытаться» формулировать все операции способами, не требующими распределенных транзакций ".