【发布时间】:2019-07-31 05:34:15
【问题描述】:
这是一个与在微服务架构中的各种 API 之间发出通信信号的良好实践相关的问题。
我正面临以下“事件”:
- 一个微服务已关闭(物理上)
- 一个微服务使用错误的 URL 调用另一个微服务
- 一个微服务正在使用正确的 URL 但错误的参数调用另一个微服务(例如查询参数,或 POST 正文未通过验证)
- 一个微服务正在向另一个微服务请求资源,但在 DB 中找不到该特定资源(假设是 findById 类型)
我需要找到一种更好的方法,通过使用 HTTP 状态代码和各种有效负载来详细说明正在发生的事情。
例如:
- 对于案例 1,我可以将 NOT_FOUND (404) 与有效负载一起使用:API_DOWN
- 对于案例 2,我可以使用 BAD_REQUEST (400)
- 对于案例 3,我还可以将 BAD_REQUEST (400) 与验证有效负载消息一起使用
- 对于案例 4,我还可以将 NOT_FOUND (404) 与 RESOURCE_NOT_FOUND 消息一起使用
- 如果由未捕获的异常引起,其他所有内容都可能是 INTERNAL_SERVER_ERROR。
- 200 OK 好东西
有什么想法吗?我对我的临时解决方案不是 100% 满意。想让它变得更好。我理解这里有两种动物:一种是客户端-服务器信号,另一种与数据有关(有效负载丢失等)
【问题讨论】:
标签: api microservices