【发布时间】:2019-08-27 19:16:33
【问题描述】:
我有一个关于 REST API 以及如何在我们的应用程序中创建一些后端事务的问题。 我们有一个会计应用程序,因此对于创建的每笔交易都有一个分类帐条目。 (尽管客户端 - javascript 不知道此类条目)
例如,在 REST 中,我们通过 -
创建事务POST /transactions/
(或)
POST /accounts/1223/transactions/
现在,当我在 RestController 中处理这个问题时, 我想做以下事情 -
- 基于 POST 创建事务。
- 在后端创建一个分类帐条目。 (客户端 - javascript 应该不知道)
- 更新帐户上的余额条目。 (客户端 - javascript 应该不知道)
在 Spring Java 应用程序的 TransactionService 中(但这应该无关紧要,因为我的问题集中在 REST API 语义上),
@Transactional
public void saveTransaction(Transaction t) {
transactionRepo.save(t);
Ledger l = new Ledger(<particulars>)();
ledgerRepo.save(l);
Balance b = balanceService.get(<partiulars>);
balanceRepo.update(b);
}
- 我对 REST API 方法感到困惑,因为它们只更新 资源。更新资源不会改变应用程序中的其他底层细节吗?
- 阅读有关 REST 的内容会混淆事务原子性是如何产生的 解决了。 REST 中此类活动的解决方案是什么?
- 我无法使用多阶段方法(首先保存交易,然后使用交易 ID 创建分类帐等)从客户端 (javascript) 进行这些多次保存,因为客户端应用程序应该不知道此类与后端服务相关的操作.
有人可以清楚地解释在这种特殊情况下如何处理吗?
许多应用程序都与财务和会计相关,但我就是不明白为什么 REST 不适合这种实际场景。可能是我的理解不同。
【问题讨论】:
标签: java spring rest transactions