当前位置:   article > 正文

Springboot定义统一返回结果_spring boot3统一返回

spring boot3统一返回

1、数据格式的定义

项目中我们会将响应封装成json返回,一般我们会将所有接口的数据格式统一, 使前端对数据的操作更一致、轻松。
一般情况下,统一返回数据格式没有固定的格式,只要能描述清楚返回的数据状态以及要返回的具体数据就可以。但是一般会包含状态码、返回消息、数据这几部分内容
例如,我们的系统要求返回的基本数据格式如下:

code为0时表示成功:

 {
      "code": 0,
      "message": "成功",
      "data": 数据
    }
  • 1
  • 2
  • 3
  • 4
  • 5

code不为0时表示失败:

{
  "code": -1,
  "message": "失败",
  "data": null
}
  • 1
  • 2
  • 3
  • 4
  • 5

因此,我们定义统一结果

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

2、创建枚举

在finance-common中创建result包,创建枚举 ResponseEnum

@Getter
@AllArgsConstructor
@ToString
public enum ResponseEnum {

    SUCCESS(0, "成功"),
    ERROR(-1, "服务器内部错误"),
    ;

    // 响应状态码
    private Integer code;
    // 响应信息
    private String message;
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14

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;
    }
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64

三、使用统一返回结果

1、展示用户列表方法listAll

@ApiOperation("用户列表")
@GetMapping("/list")
public R listAll(){
    List<User> list = userService.list();
    return R.ok().data("list", list);
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

2、根据用户id删除方法removeById

@ApiOperation(value = "根据id删除用户", notes="逻辑删除")
@DeleteMapping("/remove/{id}")
public R removeById(
    @ApiParam(value = "数据id", required = true, example = "1")
    @PathVariable Long id){
    boolean result = userService.removeById(id);
    if(result){
        //return R.setResult(ResponseEnum.UPLOAD_ERROR);
        return R.ok().message("删除成功");
    }else{
        return R.error().message("删除失败");
    }
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13

3、新增数据

@ApiOperation("新增用户")
@PostMapping("/save")
public R save(
    @ApiParam(value = "用户对象", required = true)
    @RequestBody User user){
    boolean result = userService.save(user);
    if (result) {
        return R.ok().message("保存成功");
    } else {
        return R.error().message("保存失败");
    }
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12

4、根据id查询

@ApiOperation("根据id获取用户")
@GetMapping("/get/{id}")
public R getById(
    @ApiParam(value = "数据id", required = true, example = "1")
    @PathVariable Long id
    ){
        User user = userService.getById(id);
        if(user != null){
            return R.ok().data("record", user);
        }else{
            return R.error().message("数据不存在");
        }
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13

5、根据id修改

@ApiOperation("更新用户")
@PutMapping("/update")
public R updateById(
    @ApiParam(value = "用户对象", required = true)
    @RequestBody User user){
    boolean result = userService.updateById(user);
    if(result){
        return R.ok().message("修改成功");
    }else{
        return R.error().message("修改失败");
    }
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/笔触狂放9/article/detail/183979
推荐阅读
相关标签
  

闽ICP备14008679号