我已经通过2个使用Lagom开发微服务架构系统的例子,即' chirp'和' cargotracker',但没有一个显示如何更新到现有实体。
例如,让以下实体使用REST URI
Sugguestion { ID 内容 查看次数 作者 }
api/suggestion with Http Post ----> add a new suggestion
api/suggestion/:id with Http Get, ---->read a suggestion
api/suggestion/:id with Http Delete, ---->remove a suggestion
如何更新?
1)api / suggestion / viewCount与Http Put?
2)api / suggestion /:带Http Put的id?
3)api / suggestion /:id与Http Post?
上述3 approch有一些缺点
for 1),需要为每个字段定义一个单独的数据类,否则,直接在Suggestion实体上更新将引入'可变更改',这是对Lagom的原则。
for 2)& 3),需要旧状态的深层副本并使用更改的字段进行更新,否则,会引入可变更改'同样。
还有其他选择吗?
由于
答案 0 :(得分:0)
我们使用像
这样的东西api/suggestion/:id PUT // for updating the entire resource
api/suggestion/:id/views //for updating a portion of the resource
1)服务映射请求命令。该命令可以只包含实体中字段的子集。 2)和3)您需要阅读文档和CQRS设计。该架构最重要的是处理可变状态的高度并发更新