【发布时间】:2017-09-25 10:18:44
【问题描述】:
我有一个 REST API,它允许创建和更新一些资源,比如汽车。
POST /cars
POST /cars/:id
汽车有一个ID 字段,由服务器在创建时生成。
我希望允许使用这些汽车的一些业务流程将汽车的每个“修订版”视为不可变的,但允许通过 REST API 对汽车进行更改,以便创建新的“修订版”。这些修订是在时间线上进行的,并且取决于何时进行更改,业务流程将使用或不使用它。
我想听听对此的一些想法以及如何去做。
一个有点老套的解决方案当然是保持汽车不可变,ID 就是“修订”句柄。更新会产生具有不同 ID 的新车。用一个 ID 调用 API 并取回另一个 ID 当然有点奇怪。
想法和建议?谢谢!
更新
好的,在查看了调查修订的建议以及 StackExchange 如何在问题和答案中使用这些修订后,我想知道如何实际处理 cars 和 revisions 以了解哪个对象具有哪些字段以及如何处理找到例如ID 识别的特定汽车的最新版本。
例如,汽车有:
car:
id: 1
brand: Toyota
model: Yaris
price: 1000
假设价格会随着时间而变化,这应该通过汽车的修订来捕捉,例如:
revision:
car_id: 1
revision: 1
price: 900
假设我想获得 ID 为 1 的最新汽车,它应该给我现在售价 900 而不是 1000 的 Toyota Yaris。这些是现在数据库中的预期值,即两行和最新版本 (如果找到)覆盖另一个?这是如何工作的?
更新2
好的,所以修订只是为了跟踪历史,最新信息在 cars 条目本身中。 IE。当更新发生时,除了更新汽车条目之外,还会使用以前的值创建一个新修订版。两者都在事务中完成。
【问题讨论】: