在 Java Spring Boot 中处理返回成功(即 20X)响应和失败(即 4XX、5XX 等)响应的最佳方法?

问题描述 投票:0回答:1

我知道在 Spring @RestController 类中,我们可以做类似的事情:

@GetMapping("/"
public ResponseEntity<Weather> getWeatherRecordsById(@PathVariable Integer id){
   mySpringDataJPARepository.findById(id)
      .map(res -> new ResponseEntity<>(res, HttpStatus.Ok)
      .orElseGet(() -> new ResponseEntity<>(HttpStatus.NotFound);

但是,这似乎是手动/冗长的 - 当您需要返回给用户/客户端的唯一响应/HTTP 代码时,是否有更有效的方法来处理成功和失败的 HTTP 响应? Spring AOP/面向方面的编程和建议?欢迎任何想法,请告诉我 - 谢谢!

java spring spring-boot error-handling spring-restcontroller
1个回答
0
投票

问题是你需要有适当的异常/错误处理策略。

这意味着管理已检查和未检查的异常。

然后您需要使用 @AdviceController 注释创建一个全局异常处理程序,在其中将异常与预期响应及其 Http 状态进行匹配。

这不仅仅是关于AOP,或者Spring,它是关于错误处理,或者异常处理策略。

例如:

@ControllerAdvice
public class CustomResponseEntityExceptionHandler extends ResponseEntityExceptionHandler {

    @ExceptionHandler(WeatherNotFoundException.class)
    public ResponseEntity<?> weatherNotFoundHandler(WeatherNotFoundException ex) {
        return new ResponseEntity<>(new ErrorDetails("Weather Not Found", ex.getMessage()), HttpStatus.NOT_FOUND);
    }
    
    // Additional exception handlers can be defined here for different types of exceptions
}
© www.soinside.com 2019 - 2024. All rights reserved.