vit*_*dcs 6 rest microservices
我有两个微服务:
此外,MessageService中的每条消息都有一个属性user_id,它引用UserService中的用户.
现在,假设我想列出给定用户的所有消息.现在我可以想到以下方法:
哪种方法最合适?
小智 5
如果您已经设计了微服务,其中用户和消息是两个不同的域/微服务,那么您最好的选择将是设计一个结合这两种服务并提供客户需求的边缘服务。例如,该服务可以是
/messages_by_user/:id
Run Code Online (Sandbox Code Playgroud)
请记住,微服务主要提供CRUD对域资源的操作,但客户端需要的不仅仅是对资源的 CRUD 操作,在这种情况下,您应该始终考虑创建边缘服务来满足客户端的需求。
如果您还没有实现这些服务,那么我建议将用户和消息放入同一个微服务中,并将用户视为消息的子资源。在这种情况下,所有以下路径都是有效的。
/messages
/messages/:id
/message/:id/users
/messages/user/:id
Run Code Online (Sandbox Code Playgroud)
当您设计微服务时,您需要在更有意义的方面取得平衡。虽然理论上每个资源及其CRUD操作都应该有一个单独的微服务,但实际上,只要不影响服务的可扩展性和性能,您可以组合一些相关资源并使它们成为子资源。
这个问题没有正确或错误的答案。IMO,这取决于消息是独立资源还是域逻辑中用户资源的一部分。
如果消息始终属于单个用户,那么您可以将用户的消息视为消息集合中的子资源或分层划分,我可能更喜欢第一个 URI 方案。在这种情况下,我可能会选择类似的路径/user/:id/messages而不是复数“用户”。或者将用户 ID 放在消息后面,例如:/messages/user/:id
如果消息本身是您域中的一个实体,或者可以属于多个用户(例如电子邮件消息),那么使用查询字符串方案过滤消息会更有意义。
| 归档时间: |
|
| 查看次数: |
543 次 |
| 最近记录: |