@RestControllerAdvice实现统一返回格式
时间: 2023-11-18 08:50:57 浏览: 76
@RestControllerAdvice是一个Spring注解,用于实现统一返回格式。通过在这个注解下添加@ExceptionHandler方法,可以对不同类型的异常进行处理,并返回统一格式的响应数据。在示例代码中,CommonResponseDataAdvice类中的handlerGlobeException方法和handlerCommonException方法分别处理了Exception类型和CommonException类型的异常,对异常进行捕捉并返回特定的错误信息。这样,无论发生哪种异常,都能够以统一的格式返回给前端。这种统一返回格式可以提高开发效率,并提供更好的用户体验。
相关问题
@RestControllerAdvice注释的作用
@RestControllerAdvice注解是Spring框架中的一个注解,它的作用是用于全局异常处理和全局数据绑定。具体来说,@RestControllerAdvice注解可以将一个类标记为全局异常处理类,用于捕获和处理Controller层抛出的异常,并返回自定义的错误信息给客户端。同时,它还可以在Controller层的方法执行前后进行一些通用的数据绑定操作,比如添加全局的请求参数、返回结果的封装等。
使用@RestControllerAdvice注解的类需要结合其他注解一起使用,常见的有以下几种:
1. @ExceptionHandler:用于捕获指定异常类型的异常,并进行相应的处理。
2. @InitBinder:用于对请求参数进行预处理,比如数据格式转换、数据校验等。
3. @ModelAttribute:用于在Controller方法执行前将一些公共数据绑定到Model中,使得这些数据在视图中可以直接使用。
总结一下,@RestControllerAdvice注解的作用是实现全局异常处理和全局数据绑定,提供了一种统一处理异常和数据绑定的方式,减少了代码的重复性,提高了开发效率。
Spring Boot 实现统一数据返回格式
Spring Boot 提供了一种简单的方式来处理RESTful API的数据返回格式,通常我们会使用`ResponseEntity`配合`@RestControllerAdvice`或自定义异常处理器来实现统一的数据格式。`ResponseEntity`允许我们添加状态码、消息头以及响应体内容,常见的格式如JSON。
例如,当一个请求成功完成,我们可以这样返回:
```java
@GetMapping("/example")
public ResponseEntity<YourData> getData() {
YourData data = yourService.getData();
return ResponseEntity.ok().body(data);
}
```
这里,`ResponseEntity.ok()`表示HTTP状态码为200,`.body(data)`则设置响应体为`YourData`对象。
如果需要错误处理,可以创建一个全局异常处理类,比如:
```java
@RestControllerAdvice
public class GlobalExceptionHandler {
@ExceptionHandler(value = Exception.class)
public ResponseEntity<Object> handleException(Exception ex) {
Map<String, Object> errorMap = new HashMap<>();
errorMap.put("message", ex.getMessage());
return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body(errorMap);
}
}
```
这将统一处理所有未捕获的异常,并返回标准的错误信息和状态码。