java中统一返回前端格式及统一结果处理返回详解

 更新时间:2025年02月25日 10:55:11   作者:小学鸡!  
这篇文章主要介绍了统一结果处理的重要性,以及如何在SpringBoot项目中定义和使用统一结果返回类,通过构造器私有化和静态方法ok、error,提供了成功和失败的统一响应格式,需要的朋友可以参考下

统一结果处理

为什么要使用统一结果?

1、大部分前后端项目采用 JSON 格式进行数据交互,定义一个统一的数据规范,有利于前后台的交互、以及信息处理。

2、Java后端开发项目时,需要给前端传一些数据,可以直接将一个 List 或者 Map 返回给前端,但是这样会显得很乱,并且有时候前端需要的不仅仅只是数据,可能还有一些错误码、错误信息等,这时就需要一种规范的数据格式传到前端。

返回格式的属性说明

  • success: true/false,是否响应成功,设置成 Boolean 类型。
  • code: 200/400/500等,响应状态码。设置成 Integer 类型。
  • message: 访问成功/系统异常等,状态码描述,设置成 String 类型。
  • data: 处理得数据,响应数据,设置成 HashMap 类型。

下面举出来一个 Spring Boot 项目中,通过接口返回给前端的结果格式示例:

// 举例:返回结果样式
{
  "success": true,
  "code": 200,
  "message": "查询用户列表",
  "data": {
    "itms": [
      {
        "id": "1",
        "username": "admin",
        "role": "ADMIN",
        "createTime": "2020-4-24T15:32:29",
        "modifiedTime": "2020-4-24T15:41:40"
      },{
        "id": "2",
        "username": "zhangsan",
        "role": "USER",
        "createTime": "2020-4-24T15:32:29",
        "modifiedTime": "2020-4-24T15:41:40"
      }
    ]
  }
}

统一结果返回类如何定义

  • 构造器私有,不允许进行实例化,但提供静态方法:ok、error 返回一个实例

    • ok:返回一个 成功操作 的实例对象
    • error:返回一个 失败操作 的实例对象
  • 采用链式调用(即:方法返回对象为其本身,return this)----> 下面代码中涉及到

统一结果返回类:

@Data
public class Result {
    private Boolean success;
    private Integer code;
    private String message;
    private Map<String, Object> data = new HashMap<>();
    
    // 默认私有构造器
    private Result(){
        
    }
    
    // 自定义构造器
    private Result(Boolean success, Integer code, String message){
        this.success = success;
        this.code = code;
        this.message = message;
    }
    
    
    
    // 返回一个默认的 成功操作 的实例对象,默认响应状态码 200
    public static Result ok(){
        // 使用 HttpStatus 的常量表示响应状态码,这个需要导入 httpcore 依赖
        return new Result(true, HttpStatus.SC_OK, "success");
    }
    
    // 返回一个自定义 成功操作 的实例对象
    public static Result ok(Boolean success, Integer code, String message) {
        return new Result(success, code, message);
    }
    
    
    
    // 返回一个默认的 失败操作 的结果,默认响应状态码为 500
    public static Result error() {
        return new Result(false, HttpStatus.SC_INTERNAL_SERVER_ERROR, "error");
    }
    
    // 返回一个自定义 失败操作 的实例对象
    public static Result error(Boolean success, Integer code, String message) {
        return new Result(success, code, message);
    }
    
    
    
    // 自定义响应是否成功
    public Result success(Boolean success) {
        this.setSuccess(success);
        return this;
    }
    
    // 自定义响应状态码
    public Result code(Integer code) {
        this.setCode(code);
        return this;
    }
    
    // 自定义响应消息
    public Result message(String message) {
        this.setMessage(message);
        return this;
    }
    
    // 自定义响应数据,一次设置一个 map 集合
    public Result data(Map<String, Object> map) {
        this.data.putAll(map);
        return this;
    }
    
    // 通用设置响应数据,一次设置一个 key - value 键值对
    public Result data(String key, Object value) {
        this.data.put(key, value);
        return this;
    }
}

代码说明:

1、统一结果返回类。方法采用链式调用的写法(即返回类本身 return this)。

2、构造器私有,不允许进行实例化,但提供静态方法 ok、error 返回一个实例。

3、静态方法说明:

  • ok: 返回一个 成功操作 的结果(实例对象)。
  • error: 返回一个 失败操作 的结果(实例对象)。

4、普通方法说明:

  • success: 用于自定义响应是否成功
  • code: 用于自定义响应状态码
  • message: 用于自定义响应消息
  • data: 用于自定义响应数据

5、依赖信息说明:

  • 此处使用 @Data 注解,需导入 lombok 相关依赖文件。
  • 使用 HttpStatus 的常量表示 响应状态码,需导入 httpcore 相关依赖文件。

注意:使用 HttpStatus 时,要加这个依赖:

<dependency>
    <groupId>org.apache.httpcomponents</groupId>
    <artifactId>httpcore</artifactId>
    <version>4.4.13(版本号)</version>
</dependency>
<dependency>
    <groupId>org.projectlombok</groupId>
    <artifactId>lombok</artifactId>
    <version>1.18.12</version>
    <scope>provided</scope>
</dependency>

4、使用:修改某个 controller 如下所示:

@GetMapping("selectOne")
public Result selectOne(Integer id) {
    Emp emp = this.empService.queryById(id);
    if (emp == null) {
        return Result.error().message("用户不存在");
    }
    return Result.ok().data("items", emp).message("查询成功");
}

4.1 成功:若查询用户成功,调用 ok 返回查询到的结果。

{
    "success": true,
    "code": 200,
    "message": "查询成功",
    "data": {
        "items": {
            "id": 1,
            "name": "tom",
            "salary": 6000.0,
            "age": 20,
            "email": "tom@163.com"
        }
    }
}

4.2 失败:若查询用户失败,调用 error 返回查询失败信息。

{
    "success": false,
    "code": 500,
    "message": "用户不存在",
    "data": {}
}

总结

到此这篇关于java中统一返回前端格式及统一结果处理返回的文章就介绍到这了,更多相关java统一结果处理返回内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 使用Spring Boot框架整合Redis的超详细案例教程

    使用Spring Boot框架整合Redis的超详细案例教程

    本文详细介绍了如何在SpringBoot项目中整合Redis,包括依赖配置、连接设置、基本操作和应用案例,通过整合,可以充分利用SpringBoot和Redis的优势,提升应用性能和可扩展性,感兴趣的朋友跟随小编一起看看吧
    2025-11-11
  • MyBatis Generator使用小结

    MyBatis Generator使用小结

    本文主要介绍了MyBatis Generator使用小结,它能够根据数据库表,自动生成java实体类、dao层接口及mapper.xml文件,具有一定的参考价值,感兴趣的可以了解一下
    2023-11-11
  • 一篇文章带你入门Java字面量和常量

    一篇文章带你入门Java字面量和常量

    这篇文章主要介绍了探究Java的常量,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-08-08
  • Java this关键字的使用案例详解

    Java this关键字的使用案例详解

    这篇文章主要为大家介绍了Java this关键字的使用,具有一定的参考价值,感兴趣的小伙伴们可以参考一下,希望能够给你带来帮助
    2022-01-01
  • Rabbitmq消息推送功能实现示例

    Rabbitmq消息推送功能实现示例

    rabbitMQ为异步消息处理提出了一个很好的解决方案,它是一个非常好用的消息中间件。主要解决当生产者大量产生数据时,消费者无法快速消费的问题。这个时候需要一个中间层,保存这个数据,rabbitMQ是一个很好的解决方案
    2022-12-12
  • 如何在IDEA上安装scala插件并创建工程(图文教程)

    如何在IDEA上安装scala插件并创建工程(图文教程)

    这篇文章主要介绍了一文教你如何在IDEA上安装scala插件并创建工程,本文通过图文并茂的形式给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-07-07
  • Java HashSet添加 遍历元素源码分析

    Java HashSet添加 遍历元素源码分析

    这篇文章主要为大家详细介绍了HashSet、HashMap底层添加、遍历元素的机制,追踪并分析源码,文中的示例代码讲解详细,希望对大学有所帮助
    2022-07-07
  • 详解PowerDesigner之CDM、PDM、SQL之间转换

    详解PowerDesigner之CDM、PDM、SQL之间转换

    这篇文章主要介绍了详解PowerDesigner之CDM、PDM、SQL之间转换的相关资料,希望通过本文能帮助到大家,需要的朋友可以参考下
    2017-10-10
  • ReentrantReadWriteLock不能锁升级的原因总结

    ReentrantReadWriteLock不能锁升级的原因总结

    今天给大家带来的是关于Java并发的相关知识,文章围绕着为什么ReentrantReadWriteLock不能锁升级展开,文中有非常详细的介绍及代码示例,需要的朋友可以参考下
    2021-06-06
  • 利用Java实现读取WPS Excel中嵌入的图片

    利用Java实现读取WPS Excel中嵌入的图片

    许多数据文件中可能包含嵌入式图片,这些图片对于数据分析和可视化非常重要,下面我们就来看看如何使用Java读取WPS Excel中嵌入的图片吧
    2024-11-11

最新评论