一元夺宝网站建设费用,动画形式的h5在哪个网站做,wordpress免费 360插件下载地址,建设网站公司域名在 Spring Boot 项目中#xff0c;统一的数据格式返回是一种良好的实践#xff0c;它提高了代码的可维护性和一致性#xff0c;并改善了客户端与服务端之间的通信。本文将介绍如何在 Spring Boot 中实现统一的数据格式返回。 1 为什么需要统一数据返回格式
⽅便前端程序员更…在 Spring Boot 项目中统一的数据格式返回是一种良好的实践它提高了代码的可维护性和一致性并改善了客户端与服务端之间的通信。本文将介绍如何在 Spring Boot 中实现统一的数据格式返回。 1 为什么需要统一数据返回格式
⽅便前端程序员更好的接收和解析后端数据接⼝返回的数据。 降低前端程序员和后端程序员的沟通成本按照某个格式实现就⾏了因为所有接⼝都是这样返回的。 有利于项⽬统⼀数据的维护和修改。 有利于后端技术部⻔的统⼀规范的标准制定不会出现稀奇古怪的返回内容。
2 统一数据返回格式的实现 统⼀的数据返回格式可以使⽤ ControllerAdvice ResponseBodyAdvice 的⽅式实现。 ControllerAdvice是Spring框架提供的一个用于全局处理控制器的增强器注解。通过ControllerAdvice注解的类可以将对应的增强逻辑应用到所有的Controller注解的控制器中。ResponseBodyAdvice是一个用于处理响应体的接口。通过实现这个接口可以在Controller方法返回之前和之后对响应体进行处理。 具体实现如下 2.1 创建统一响应类
首先我们需要创建一个统一的响应类用于封装 API 返回的数据
public class ApiResponseT {private int status;private String message;private T data;public ApiResponse(int status, String message, T data) {this.status status;this.message message;this.data data;}// Getters and Setters
}2.2 创建统一响应处理类
这里使用controller注解和ResponseBodyAdvice来实现 ControllerAdvice
public class GlobalResponseBodyAdvice implements ResponseBodyAdviceObject {Overridepublic boolean supports(MethodParameter returnType, Class converterType) {// 判断是否需要处理响应体return true;}Overridepublic Object beforeBodyWrite(Object body, MethodParameter returnType, MediaType selectedContentType,Class selectedConverterType, ServerHttpRequest request, ServerHttpResponse response) {// 包装响应体if (body instanceof ApiResponse) {return body;}return new ApiResponse(HttpStatus.OK.value(), Success, body);}
}为了保证异常也能返回统一的数据格式我们需要创建一个全局异常处理类博客 讲解了Spring Boot中如何进行统一异常处理。
ControllerAdvice //添加完此注解后此类随着springboot项目的启动而启动并且会监控controller的异常.监听项目中所有的异常
ResponseBody
public class MyExceptionAdvice {//这里的一场都是意外异常并不是业务异常业务异常后端controller会处理返回给前端.业务异常会和前端沟通好已规定的状态码返回。ExceptionHandler(NullPointerException.class)public ApiResponseString doNullPointerException(NullPointerException e){ApiResponseString apiResponse new ApiResponse(HttpStatus.INTERNAL_SERVER_ERROR.value(), e.getMessage(), null);return apiResponse;}// 默认的异常处理当有有异常出现的时候会先匹配子类的异常当所有的异常都没有匹配的时候就会走这一条默认的一场路线业务。ExceptionHandler(Exception.class)public ApiResponseString doException(Exception e){ApiResponseString apiResponse new ApiResponse(HttpStatus.INTERNAL_SERVER_ERROR.value(), e.getMessage(), null);return apiResponse;}
}
2.3 controller模拟数据并返回
观察异常出现情况下和正常访问情况下是否都实现了统一格式返回。 RestController
RequestMapping(/user)
public class UserController {RequestMapping(login)public String login(){Object obj null;System.out.println(obj.hashCode());return 这里是login;}GetMapping(/data)public User getUserData() {// 这个方法会返回一个User对象User user new User();user.setId(1);user.setName(张三);user.setEmail(zhangsanexample.com);return user;}GetMapping(/success)public Integer getSuccessMessage() {// 这个方法会返回一个简单的字符串return 123456;}
} 访问127.0.0.1:8080/user/login 可以看到异常信息被统一处理并统一格式后返回。 访问127.0.0.1:8080/user/data 可以看到接收到的数据也被统一处理。 访问127.0.0.1:8080/user/success 可以看到接收到的数据也被统一处理。 总结
通过上述步骤我们实现了使用ControllerAdvice和ResponseBodyAdvice统一API数据返回格式的功能。这种方式不仅简化了代码还使得API响应格式一致更加规范和易于维护。