java统一返回结果
-
格式如下
{ "code": 200, "message": "登录成功", "data": true }
-
创建返回结果类
package com.hi.utils.result; import lombok.Data; import lombok.experimental.Accessors; /** * @author hi * @program: * @description: * @date 2021-06-27 19:11:47 */ @Data @Accessors(chain = true) public class CodeMsg { public Integer code; public String message; /*服务端异常*/ public static CodeMsg SUCCESS = new CodeMsg(200,"SUCCESS"); public static CodeMsg SERVER_ERROR = new CodeMsg(100,"系统异常:%s"); public static CodeMsg BIND_ERROR = new CodeMsg(101,"(绑定异常)参数校验异常:%s"); /*用占位符 传入一个参数*/ public static CodeMsg SESSION_ERROR = new CodeMsg(102,"没有SESSION!"); /*用占位符 传入一个参数*/ public static CodeMsg REQUEST_ERROR = new CodeMsg(103,"非法请求!"); /*用占位符 传入一个参数*/ public static CodeMsg REQUEST_OVER_LIMIT = new CodeMsg(104,"请求次数过多!"); /*用占位符 传入一个参数*/ // public static CodeMsg aa = new CodeMsg(104,?); /*用占位符 传入一个参数*/ public CodeMsg() { } public CodeMsg(Integer code, String msg ) { this.code = code; this.message = msg; } //不定参的构造函数 public CodeMsg fillArgs(Object... args) { int code = this.code; String message = String.format(this.message, args); return new CodeMsg(code, message); } }
package com.hi.utils.result; import lombok.Data; import lombok.experimental.Accessors; /** * @author hi * @program: * @description: * @date 2021-06-27 19:06:55 */ @Data @Accessors(chain = true) public class Result<T> { private int code;// 业务自定义状态码 private String message;// 请求状态描述,调试用 private T data;// 请求数据,对象或数组均可 public Result() { } /** * 成功时候的调用 * @param data data * @param <T> t * @return Result */ public static <T> Result<T> success(T data){ return new Result<T>(data); } /** * 失败时候的调用 * @param msg codeMsg * @param <T> t * @return Result */ public static <T> Result<T> error(CodeMsg msg){ return new Result<T>(msg); } public static <T> Result<T> error(T data){ return new Result<T>(data); } public static <T> Result<T> error(Integer code,String message){ return new Result<T>(new CodeMsg(code,message)); } /** * 成功的构造函数 * @param data data */ public Result(T data){ this.code = 200;//默认200是成功 this.message = "SUCCESS"; this.data = data; } public Result(int code, String msg) { this.code = code; this.message = msg; } /** * 失败的构造函数 * @param msg codeMsg */ private Result(CodeMsg msg) { if(msg != null) { this.code = msg.getCode(); this.message = msg.getMessage(); } } }
-
controller层调用
@PostMapping("/userLogin") public Result<Boolean> login(@RequestBody LoginUserVo loginUserVo){ System.err.println(loginUserVo); boolean b = userService.userLogin(loginUserVo.getUsername(), loginUserVo.getPassword()); if (b){ return Result.success(b).setMessage("登录成功"); } return Result.error(new CodeMsg(401,"登录失败")); }
返回值Result最好写上返回类型,这样在swagger里面就可以显示对象属性注释