我们有一个微服务体系结构,我们正在就如何向客户端公开内部错误进行一些讨论。通过微服务传播错误的良好实践
下面是一个例子:
让我们假设我们有3个服务项目,服务A,B和C 当客户端发送到服务,这是公众的要求,该服务发送给服务B的请求向服务C发送一个请求(这是内部的,需要认证,但是凭证像环境变量一样在内部存储,而不是由客户端发送)。
由于某种原因,B和C之间的通信收到401(可能是422,403或任何客户端相关的错误),这意味着该请求未被授权。
B和C之间的通信是内部的,用户不知道这些服务。我应该公开发送401给客户端的内部结构吗?鉴于这不是客户的错?我应该送500吗?
如果不是用户的错误,那么5xx是正确的响应代码范围。 –
@OliverCharlesworth我同意你的观点,我应该在内部记录这个错误,并且不要向用户公开任何信息吗?你怎么看? –
这取决于。但通常认为不好,以便向用户公开内部错误细节(如堆栈跟踪)(从UX和安全的角度来看)。最多有一些消息,如“500服务器错误 - 唯一的错误ID是123456”,它允许您将用户与错误日志中的ID关联起来。 –