REST API中的聚合值

mrr*_*oto 7 api rest transactions aggregate value-objects

我正在申请一项需要一些复式记账的申请.目前有两个端点

/account
/transaction
Run Code Online (Sandbox Code Playgroud)

/account处理账户的一般数据时,/transaction处理存款/取款的交易.账户余额根据相关交易计算.我将它们分开以便在将值从一个账户转移到另一个账户时保持一致性.

我的问题是如何在/account端点上表示帐户的余额,因为它总是在请求时计算.响应是否应将余额作为只读字段包含?这有点像糟糕的API设计,因为所有字段,但这一个是可写/可更新的.

我想到的另一种方法是将端点扩展到

/account/{id}/balance
Run Code Online (Sandbox Code Playgroud)

仅返回相关帐户的余额.但是,除了帐户的剩余数据之外,这总是需要第二次调用以获得余额.也许答案可以概括如何表示聚合值.

Dan*_*ker 0

非常好的问题。我经常遇到这样的情况。我想说两件事:

  1. 您可能还有其他“只读”字段,例如“id”
  2. 您可能不希望每次获取帐户详细信息时都需要花费时间来计算当前余额。

我想我会选择 /account/{id}/balance ...但也许将其命名为 /account/{id}/calculatebalance 以表明运行此方法确实需要一些时间。并且,很明显该值是计算值。如果你有“几个”计算值,那么我会重新考虑我的观点。

2 美分。