gpt4 book ai didi

java - 使用 REST API 进行后端事务

转载 作者:行者123 更新时间:2023-12-02 01:11:57 24 4
gpt4 key购买 nike

我对 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);
}
  1. 我对 REST API 方法感到困惑,因为它们只更新 资源。更新资源不会改变应用程序中的其他底层细节吗?
  2. 阅读有关 REST 的内容时,会对事务原子性感到困惑解决了。在 REST 中此类 Activity 的解决方案是什么?
  3. 我无法使用多阶段方法(首先保存交易,然后使用交易 ID 创建分类账等)从客户端 (javascript) 执行这些多重保存,因为客户端应用程序应该不知道此类后端服务相关操作.

有人可以清楚地解释在这种特定情况下如何处理吗?

许多应用程序都与财务和会计相关,但我只是不明白为什么 REST 不适合这种实际场景。可能是我的理解不同吧。

最佳答案

when I deal with this in RestController, I want to do the following -

  • Create the Transaction based on POST.
  • Create a ledger entry in the back-end. (Client - javascript should be unaware)
  • Update the balance entry on the account. (Client - javascript should be unaware)

这一切看起来都很合理。

I am confused with the REST API approach as they only update the resource.

所以我的诊断是你是 semantic diffusion 的受害者;在您学习 REST 之前,它的含义发生了多大变化?

您的最佳起点可能是 Jim Webber's 2011 talk

You have to learn how to use HTTP to trigger business activity as a side effect of moving documents around the network.

HTTP 告诉您请求的语义是什么——这就是 REST 所说的“统一接口(interface)”——但它没有说明任何有关副作用的信息。事实上,在您的域中,您通过更新分类帐和余额来响应 POST 请求,这是很好

如果有帮助的话:这与网站的工作方式完全相同。您填写表格并提交,一些网页(资源)因此发生变化,后端也发生了很多有趣的事情。

关于java - 使用 REST API 进行后端事务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57680964/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com