java中统一返回前端格式,统一结果处理返回

06-01 1466阅读

文章目录

      • 统一结果处理
        • 为什么要使用统一结果?
        • 返回格式的属性说明
        • 统一结果返回类如何定义

          统一结果处理

          为什么要使用统一结果?

          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 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 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 时,要加这个依赖:

                          org.apache.httpcomponents
                          httpcore
                          4.4.13(版本号)
                      
                      
                          org.projectlombok
                          lombok
                          1.18.12
                          provided
                      
                      

                      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("查询成功");
                      }
                      

                      java中统一返回前端格式,统一结果处理返回

                        

                      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": {}
                      }
                      

                      至此,文章结束!!!

免责声明:我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自自研大数据AI进行生成,内容摘自(百度百科,百度知道,头条百科,中国民法典,刑法,牛津词典,新华词典,汉语词典,国家院校,科普平台)等数据,内容仅供学习参考,不准确地方联系删除处理! 图片声明:本站部分配图来自人工智能系统AI生成,觅知网授权图片,PxHere摄影无版权图库和百度,360,搜狗等多加搜索引擎自动关键词搜索配图,如有侵权的图片,请第一时间联系我们。

相关阅读

目录[+]

取消
微信二维码
微信二维码
支付宝二维码