0

我经历了 2 个使用 Lagom 开发微服务架构系统的示例,即“chirp”和“cargotracker”,但没有一个显示如何更新到现有实体。

例如,具有 REST URI 的以下实体

建议{ 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) 带有 Http Put 的 api/suggestion/viewCount?

2) api/suggestion/:id 与 Http Put ?

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

以上3种方法有一些缺点

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

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

还有其他选择吗?

谢谢

4

1 回答 1

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 设计。该架构主要用于处理对可变状态的高度并发更新

于 2017-03-22T20:45:06.237 回答