我已经通过了2个使用Lagom开发微服务架构系统的例子,即'chirp'和'cargotracker',但它们都没有显示如何更新到现有实体。
例如,使用REST URI
拥有以下实体Sugguestion {id内容viewCount作者}
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 with Http Put?
2)api/suggestion/:id with Http Put ?3)api/suggestion/:id with Http Post ?
以上三种方法有一些缺点
for 1),需要为每个字段定义一个单独的数据类,否则,直接在建议实体上更新会引入"可变更改",这是违反Lagom原则的。
对于2)&3),需要旧状态的深层副本并使用更改的字段进行更新,否则,也会引入'可变更改'。
还有其他选择吗?
谢谢
我们使用
api/suggestion/:id PUT // for updating the entire resource
api/suggestion/:id/views //for updating a portion of the resource
1)服务将请求映射到命令。该命令可以简单地包含实体中字段的子集。2)和3)你需要阅读文档和CQRS设计。该架构主要用于处理对可变状态的高度并发更新