REST API中的聚合值

时间:2015-10-30 15:17:17

标签: api rest transactions aggregate value-objects

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

/account
/transaction

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

我的问题是如何在/account端点表示帐户的余额,因为它始终会根据请求时间计算。响应是否应将余额作为只读字段包含?这有点像糟糕的API设计,因为所有字段都是可写的/可更新的。

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

/account/{id}/balance

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

1 个答案:

答案 0 :(得分:0)

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

  1. 您可能还有其他"只读"字段,例如" id"
  2. 您可能不希望每次收到帐户详细信息时都需要花费时间来计算当前余额。
  3. 我想我会选择/ account / {id} / balance ...但是可能会将其命名为/ account / {id} / calculatebalance以表明运行此方法确实需要一些时间。而且,很明显该值是计算值。如果你有几个"计算出的值,然后我会重新考虑我的意见。

    2美分。