当前位置: 首页 > news >正文

SpringBoot统一响应类型3.1.1版本

前言:

通过实践而发现真理,又通过实践而证实真理和发展真理。从感性认识而能动地发展到理性认识,又从理性认识而能动地指导革命实践,改造主观世界和客观世界。实践、认识、再实践、再认识,这种形式,循环往复以至无穷,而实践和认识之每一循环的内容,都比较地进到了高一级的程度。

阶段性总结:

基础统一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的自定义成功响应

这是我们后续的版本更新

相关文章:

  • 初识大模型——大语言模型 LLMBook 学习(一)
  • 计算机网络传输层
  • 电子学会—2024年月6青少年软件编程(图形化)四级等级考试真题——水仙花数
  • Python 动态规划(DP)套路总结
  • UE5从入门到精通之如何创建自定义插件
  • (数据结构)双向链表
  • 2025-03-09 学习记录--C/C++-PTA 习题11-1 输出月份英文名
  • BEVDepth: Acquisition of Reliable Depth for Multi-view 3D Object Detection 论文阅读
  • 代码随想录算法训练营第八天|Leetcode 151.翻转字符串里的单词 卡码网:55.右旋转字符串 字符串总结 双指针回顾
  • 基于Spring3的抽奖系统
  • 通义千问:Qwen2.5-0.5B模型架构解释
  • 绘制列线图并解释线性模型的Python包-nomogram-explainer(记我的第一个pypi项目)
  • 配置多区域OSPF,配置OSPF手动汇总,配置OSPF特殊区域
  • IO多路复用实现并发服务器
  • 电路研究10——MPU6050电路搭建
  • InDraw6.2.3 | 甾体、核苷、黄酮类化合物实现简称命名
  • 模板注入Smarty
  • 《C++ primer》第六章
  • Linux基本操作指令3
  • 用K8S部署Milvus服务
  • 许昌网站建设费用/北京seo服务商
  • 成都网站建设app开发/seo对网站优化
  • 网站建设报价单/常见的网络推广方法有哪些
  • 手机端网站怎么做seo/国外搜索引擎大全不屏蔽
  • 广州市民政局网站建设/最新seo操作
  • 不会写程序如何做网站/seo短视频网页入口引流下载