SpringBoot3

统一json返回的数据格式

1.接上篇,在common中添加常数类
1.1ApiResult类

/**
 * 统一返回对象
 *
 * @author haowei
 */
//@ApiModel("返回对象")
@Getter
@Setter
@ToString
@Builder
public class ApiResult<T> {

    //@ApiModelProperty(name = "code", value = "返回码", example = "0")
    private int code;

    //@ApiModelProperty(name = "msg", value = "返回消息", example = "SUCCESS")
    private String msg;

    //@ApiModelProperty(name = "data", value = "返回数据体", example = "{}")
    private T data;

    public ApiResult() {

    }

    public ApiResult(int code, String msg, T data) {
        this.code = code;
        this.msg = msg;
        this.data = data;
    }

    /**
     * 通用成功方法
     *
     * @param data 数据
     * @param <T>  类型
     * @return 对象
     */
    public static <T> ApiResult<T> success(T data) {
        return new ApiResult<>(HttpCodeEnum.SUCCESS.getCode(), HttpCodeEnum.SUCCESS.getMsg(), data);
    }


    /**
     * 通用失败方法
     *
     * @param code 返回码
     * @param msg  返回消息
     * @param <T>  类型
     * @return 对象
     */
    public static <T> ApiResult<T> failure(int code, String msg) {
        return new ApiResult<>(code, msg, null);
    }

    /**
     * 通用失败方法
     *
     * @param httpCodeEnum 返回枚举
     * @param <T>          类型
     * @return 对象
     */
    public static <T> ApiResult<T> failure(HttpCodeEnum httpCodeEnum) {
        return new ApiResult<>(httpCodeEnum.getCode(), httpCodeEnum.getMsg(), null);
    }
}

1.2HttpCodeEnum类

/**
 * http请求code
 *
 * @author haowei
 */
@ToString
@Getter
public enum HttpCodeEnum {
    /**
     * 成功
     */
    SUCCESS(20000, "SUCCESS"),
    /**
     * 代码或数据错误
     */
    fail(20001, "服务器内部错误,请联系后台管理员"),
    /**
     * 参数异常
     */
    PARAM_ERR(-1, "PARAM ERROR"),
    /**
     * 用户不存在
     */
    USER_NULL(-2, "USER IS NOT EXISTS"),

    /**
     * 密码错误
     */
    INVALID_PWD(-3, "INVALID PASSWORD");



    private final int code;
    private final String msg;

    HttpCodeEnum(int code, String msg) {
        this.code = code;
        this.msg = msg;
    }
}

2.修改Controller类

@RestController
@RequestMapping("/stu")


public class StudentController {

   @Autowired
   StudentServiceImpl service;

//    查询全部学生信息,GetMapping无值默认访问
   @GetMapping
   public ApiResult<List<Student>> getAll() {
       return ApiResult.success(service.list());
   }

//    查询单个信息
   //    若设为@GetMapping("/one"),则访问路径为localhost/stu/one?sid=1
   //    若设为@GetMapping("/{sid}"),则访问路径为localhost/stu/1,@PathVariable指路径变量
   @GetMapping("/{sid}")
   public ApiResult<Student> getOne(@PathVariable Integer sid) {
       return ApiResult.success(service.getById(sid));
   }
//    添加学生信息
   @PutMapping
   public ApiResult<Boolean> insert(@RequestBody Student student) {//Put必须加@RequestBody注解
       return ApiResult.success(service.save(student));
   }
//    修改学生信息
   @PostMapping
   public ApiResult<Boolean> update(@RequestBody Student student){
       return ApiResult.success(service.updateById(student));
   }
//    删除学生信息
   @DeleteMapping("/{sid}")
   public ApiResult<Boolean> delect(@PathVariable Integer sid){
       return ApiResult.success(service.removeById(sid));
   }
}

分页功能

1.修改Controller查询方法的代码

//    查询全部学生信息,GetMapping无值默认访问
    @GetMapping("/{page_num}/{page_size}")
    //获取对象列表
    public ApiResult<List<Student>> getAll(@PathVariable Integer page_num,@PathVariable Integer page_size) {
        Page<Student> page = new Page<>(page_num,page_size);
        Page<Student> studentPage = service.page(page);
        return ApiResult.success(studentPage.getRecords());
    }

2.接口说明

posted @   想吃坚果  阅读(347)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· winform 绘制太阳,地球,月球 运作规律
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
点击右上角即可分享
微信分享提示