前言:
通过实践而发现真理,又通过实践而证实真理和发展真理。从感性认识而能动地发展到理性认识,又从理性认识而能动地指导革命实践,改造主观世界和客观世界。实践、认识、再实践、再认识,这种形式,循环往复以至无穷,而实践和认识之每一循环的内容,都比较地进到了高一级的程度。
阶段性总结:
基础统一1.0(局部响应)
/** * 基础统一响应类 * @param <T> */ @Data public class apiResult<T> { private int code; private String message; private T data; /** * 带有data返回的构造函数 * @param code * @param message * @param data */ public apiResult(int code, String message, T data) { this.code = code; this.message = message; this.data = data; } /** * 不带data的构造函数 * @param code * @param message */ public apiResult(int code,String message){ this.code = code; this.message = message; } }
1.0基础版——作者评价:简单又好用
通过重载构造函数,实现局部自定义统一响应,成功响应带data,失败响应不带data
2.0进阶版
/** * 统一响应类实例化工具 */ public class apiResultYOUYA { //http成功状态码 private static final int OK = HttpStatus.OK.value(); //隔着报错状态码 private static int NO = HttpStatus.INTERNAL_SERVER_ERROR.value(); //基本成功响应 public static <T>apiResult<T> success(T data){ return new apiResult<>(OK,"操作成功",data); } //自定义信息成功响应 public static <T>apiResult<T> success(String message,T data){ return new apiResult<>(OK,message,data); } //基础失败响应 public static <T>apiResult<T> error(){ return new apiResult<>(NO,"系统错误,请联系管理员"); } //自定义信息失败响应 public static <T>apiResult<T> error(String message){ return new apiResult<>(NO,message); } }
2.0进阶版——作者评价:在1.0版本的简单易用基础上,优化了实例统一响应对象
通过构建函数,优雅地实例化统一响应对象
3.0高阶版
@ControllerAdvice public class GlobalApiResult implements ResponseBodyAdvice<Object> { /** * 此Advice是否使用于该返回类型和Converter类型(意思是可以配置多个哦) * @param returnType 返回类型(这里可以获取很多东西, 别被名字误导了) * @param converterType 自动选择的转换器类型 * @return 返回true表示将会走接下来的方法(beforeBodyWrite), 否则不会 */ @Override public boolean supports(MethodParameter returnType, Class<? extends HttpMessageConverter<?>> converterType) { //false -> true 用于测试,正式的时需要修改 return true; } /** * HttpMessageConverter转换之前进行的操作 * @param body 业务层接口返回值 * @param returnType 返回类型 * @param selectedContentType 根据请求头协商的ContentType * @param selectedConverterType 自动选择的转换器类型 * @param request 当前请求 * @param response 当前响应 * @return 返回至前端的数据,参数为,形参 */ @Override public Object beforeBodyWrite(Object body, MethodParameter returnType, MediaType selectedContentType, Class<? extends HttpMessageConverter<?>> selectedConverterType, ServerHttpRequest request, ServerHttpResponse response) { //第二步: 将body传入统一响应工具类中的默认成功响应 return apiResultYOUYA.success("3.0全新版本",body); } }
3.0高阶版 —— 作者评价:在1.0,2.0的基础上,结合spring web的响应机制,实现全局统一响应,3.0为测试版本,它是真正意义上的全局统一响应,无论报错还是成功,统统都使用2.0的自定义成功响应
这是我们后续的版本更新