繁体   English   中英

需要关于 spring 引导 API 的错误处理的建议或更好的设计 - 微服务

[英]Need suggestion or better design on error handling for spring boot API - microservice

我正在设置新的微服务 api 以连接并从第 3 方 REST api 获取信息。 这是 api 更像是我们服务的内部,因此其他 api 可以使用这个。

我有这样的内部微服务设计:

Controller -> (调用) -> 服务层 -> (调用) -> 服务实现 -> (调用) -> rest 第 3 方 API

错误处理如下,当出现任何问题/异常时,我在异常handler(@ControllerAdvice)中填写所有ErrorDetailsObj并将响应实体包装器返回给消费服务。

public class ErrorObject {
    private String code;
    private String message; //(i choose message from error.prop based on the code)
}


public class ErrorDetailsObj {
    private HttpStatus httpStatus;
    private LocalDateTime timestamp;
    private String message;
    private List<ErrorObject> errors;
}
  1. 我在做正确的设计吗? 或者有没有更好的方法来简化错误处理?
  2. 我是否只需要发送错误代码,以便使用服务可以选择正确的错误消息并显示? 就我而言,这是我自己的内部服务,它连接到第 3 方服务。
  3. 错误处理的最佳示例?

我不确定,但您应该发送正确的 http 代码和您的消息。 您还可以查看默认的 spring 异常处理程序ResponseEntityExceptionHandler

我认为您的方法没有任何问题。 并且由于您提到它工作正常,因此您已经定义了所有必需的类自定义异常类。 并且根据您的问题: “可能仅公开错误代码,以便使用服务可以利用那里的服务中的错误消息”。 - 您需要在您看到异常的地方填写错误消息(来源)。

我可以建议一个小改动,你可以从 ErrorDetailsObj 中提取 httpStatus。 在返回 ResponseEntity object 时,您可以将 HttpStatus 发送给 ResponseEntity 的 cconstructor。 例如:返回 ResponseEntity(errorDetailsObj, HttpStatus.<>);

希望这可以帮助。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM