gpt4 book ai didi

java - Spring boot - 自定义rest Controller 异常处理HTTP状态

转载 作者:行者123 更新时间:2023-12-02 09:14:08 24 4
gpt4 key购买 nike

我为我的 Spring Boot 应用程序创建了一个自定义 REST Controller 异常处理程序...

@ControllerAdvice(annotations = RestController.class)
public class RestControllerExceptionHandler {
@ExceptionHandler(TechnicalException.class)
public ResponseEntity handleTechnicalException(TechnicalException e) {
return new ResponseEntity<>(
new RestErrorMessageModel(e.getErrorCode(), e.getMessage()), BAD_REQUEST
);
}

@ExceptionHandler(BusinessException.class)
public ResponseEntity handleBusinessException(BusinessException e) {
return new ResponseEntity<>(
new RestErrorMessageModel(e.getErrorCode(), e.getMessage()), BAD_REQUEST
);
}

@ExceptionHandler(ValidationException.class)
public ResponseEntity handleValidationException(ValidationException e) {
return new ResponseEntity<>(
new RestErrorMessageModel(e.getErrorCode(), e.getDetails()), BAD_REQUEST
);
}
}

...我处理验证、业务(由于违反业务规则而导致的异常)和技术(数据库相关、无效的请求参数等)异常。

异常类有两个参数:errorCode(唯一枚举)和message(异常详细信息)。

正如您从示例中看到的,对于所有情况,我都返回 BAD_REQUEST (400) 状态,这不是最佳实践。

我想知道根据异常类别处理 HTTP 状态的最佳方法,例如:对于验证错误,返回 BAD_REQUEST (400) 状态是“okay”。

...或者有什么方法可以让 spring-boot “决定”发送哪个状态代码?

最佳答案

从java和spring方面,使用@ControllerAdvice和@ExceptionHandler是最佳实践。

从错误代码的取值来看,没有标准。但你可以:

1。关注old https code status standard

  • 1xx 信息响应 - 已收到请求,正在继续处理
  • 2xx 成功 – 请求已成功收到、理解并接受
  • 3xx 重定向 – 需要采取进一步操作才能完成请求
  • 4xx 客户端错误 - 请求包含错误语法或无法满足
  • 5xx 服务器错误 – 服务器无法满足明显有效的请求

2。来自世界级公司的复制

https://developer.paypal.com/docs/api/reference/api-responses/#http-status-codes

3。实现自己的代码而不冲突http旧标准

https://developer.paypal.com/docs/classic/api/errors/#10000-to-10099

关于java - Spring boot - 自定义rest Controller 异常处理HTTP状态,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59139920/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com