• 统一返回结果


    统一返回结果

      项目中我们会将响应封装成json返回,一般我们会将所有接口的数据格式统一, 使前端对数据的操作更一致、轻松。

    1、数据格式定义

    {
      "code": 数字, //业务响应码
      "message": 字符串, //返回消息
      "data": 对象 //返回数据
    }

    2、创建通用枚举

    @Getter
    @AllArgsConstructor
    @ToString
    public enum ResponseEnum {
    
        SUCCESS(0, "成功"),
        ERROR(-1, "服务器内部错误"),
        ;
    
        // 响应状态码
        private Integer code;
        // 响应信息
        private String message;
    }

    3、定义统一结果类

    @Data
    public class R {
    
        private Integer code;
    
        private String message;
    
        private Map<String, Object> data = new HashMap();
    
        /**
         * 构造器私有
         */
        private R(){}
    
        /**
         * 返回成功
         */
        public static R ok(){
            R r = new R();
            r.setCode(ResponseEnum.SUCCESS.getCode());
            r.setMessage(ResponseEnum.SUCCESS.getMessage());
            return r;
        }
    
        /**
         * 返回失败
         */
        public static R error(){
            R r = new R();
            r.setCode(ResponseEnum.ERROR.getCode());
            r.setMessage(ResponseEnum.ERROR.getMessage());
            return r;
        }
    
        /**
         * 设置特定结果
         */
        public static R setResult(ResponseEnum responseEnum){
            R r = new R();
            r.setCode(responseEnum.getCode());
            r.setMessage(responseEnum.getMessage());
            return r;
        }
    
        public R message(String message){
            this.setMessage(message);
            return this;
        }
    
        public R code(Integer code){
            this.setCode(code);
            return this;
        }
    
        public R data(String key, Object value){
            this.data.put(key, value);
            return this;
        }
    
        public R data(Map<String, Object> map){
            this.setData(map);
            return this;
        }
    }

     4、测试

    4.1 查询列表

    @ApiOperation("积分等级列表")
    @GetMapping("/list")
    public R listAll(){
        List<IntegralGrade> list = integralGradeService.list();
        return R.ok().data("list", list);
    }

    4.2 修改

    @ApiOperation(value = "根据id删除积分等级", notes="逻辑删除")
    @DeleteMapping("/remove/{id}")
    public R removeById(
        @ApiParam(value = "数据id", required = true, example = "1")
        @PathVariable Long id){
        boolean result = integralGradeService.removeById(id);
        if(result){
            return R.ok().message("删除成功");
        }else{
            return R.error().message("删除失败");
        }
    }

    4.3 新增

    @ApiOperation("新增积分等级")
    @PostMapping("/save")
    public R save(
        @ApiParam(value = "积分等级对象", required = true)
        @RequestBody IntegralGrade integralGrade){
        boolean result = integralGradeService.save(integralGrade);
        if (result) {
            return R.ok().message("保存成功");
        } else {
            return R.error().message("保存失败");
        }
    }

    4.4 查询单个

    @ApiOperation("根据id获取积分等级")
    @GetMapping("/get/{id}")
    public R getById(
        @ApiParam(value = "数据id", required = true, example = "1")
        @PathVariable Long id
        ){
            IntegralGrade integralGrade = integralGradeService.getById(id);
            if(integralGrade != null){
                return R.ok().data("record", integralGrade);
            }else{
                return R.error().message("数据不存在");
            }
    }
  • 相关阅读:
    POJ-1502-MPI Maelstrom
    POJ-3259-Wormholes
    【BZOJ4399】—膜法少女LJJ(线段树合并)
    省选模板复习—【计算几何】
    【BZOJ2115】【WC2011】—Xor(线性基)
    【洛谷P5290】【十二省联考2019】春节十二响(贪心+启发式合并)
    【BZOJ5461】 【PKUWC2018】—Minimax(线段树合并优化dp)
    【LOJ#3043】【洛谷P5280】【ZJOI2019】—线段树(计数dp+线段树)
    【省选模拟】—猎人杀(概率dp)
    【BZOJ4828】【HNOI2017】—大佬(LmyAKIOI!)
  • 原文地址:https://www.cnblogs.com/gzhcsu/p/15947187.html
Copyright © 2020-2023  润新知