通过REST API在Lagom中更新

我已经通过2个使用Lagom开发微服务架构系统的例子,即'chirp'和'cargotracker',但它们都没有显示如何更新到现有实体 .

例如,具有REST URI的跟随实体

Sugguestion

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 /:id与Http Put?

3)api / suggestion /:id与Http Post?

以上3个方法有一些缺点

对于1),需要为每个字段定义一个单独的数据类,否则,直接在Suggestion实体上更新将引入“可变更改”,这是对Lagom的原则 .

对于2)和3),需要旧状态的深层副本并使用更改的字段进行更新,否则,也会引入“可变更改” .

还有其他选择吗?

谢谢

回答(1)

2 years ago

我们使用类似的东西

api/suggestion/:id PUT     // for updating the entire resource
api/suggestion/:id/views   //for updating a portion of the resource

1)服务映射对命令的请求 . 该命令可以只包含实体中字段的子集 . 2)和3)您需要阅读文档和CQRS设计 . 该架构最重要的是处理可变状态的高度并发更新