我有两个微服务"前端"和" / users"。他们与REST API进行通信 当客户向"前端"发出请求时,它会在内部请求" / users"微服务。
当/ users以500错误回答时,哪种状态代码应返回前端服务?
答案 0 :(得分:1)
500内部错误在这里很好:https://en.wikipedia.org/wiki/List_of_HTTP_status_codes#5xx_server_errors
如果您不知道在这种情况下该怎么做(如果您的服务如果没有基础服务就无法工作),则500专用于此。
答案 1 :(得分:0)
嗯,这取决于! 微服务应遵循其Bounded Context,并且应独立且与其他服务松散耦合。克里斯·理查森(Chris Richardson)Microservices网站的摘录:
微服务-也称为微服务体系结构-是一种将应用程序构造为一组服务的体系结构样式。
- 高度可维护和可测试
- 松散耦合
- 可独立部署
- 围绕业务能力组织
- 由一个小团队拥有
在您的上下文中,当基础通信的用户服务失败时(不仅是500,而且还可能是其他失败),您应该尝试回答前端服务的绑定上下文的预期结果是什么。您还能返回有意义的回复吗?返回半水合的数据是否可以接受(例如,假设Frontend服务也从其自身聚合了一些数据,则返回数据而没有来自Users服务的数据不可用)。如果是,那么您可能应该处理来自用户服务的500响应,并返回带有2xx响应的半水化数据(取决于请求的内容)。如果答案为“否”,那么最好也从Frontend服务中冒出5xx错误,就像answered above被Eugene一样。