统一返回对象
1.创建实体类BaseRspVo
@Data
public class BaseRspVo<T> {
private boolean success;
private String msg;
private Integer errorCode;
private T data;
public BaseRspVo() {
}
public BaseRspVo (T data){
this.success = true;
this.msg= ErrorCodesEnum.SUCCESS.getMsg();
this.errorCode = ErrorCodesEnum.SUCCESS.getCode();
this.data = data;
}
public BaseRspVo(ErrorCodesEnum errorCode) {
if(errorCode == ErrorCodesEnum.SUCCESS) {
this.success = true;
} else {
this.success = false;
}
this.msg = errorCode.getMsg();
this.errorCode = errorCode.getCode();
}
}
错误Code枚举类
public enum ErrorCodesEnum {
SUCCESS(10000,"成功"),
SYS_ERROR(1000,"系统异常,请稍后再试"),
DUPLICATE_KEY(10001,"数据库中已存在该记录"),
NO_HANDLER_FOUND(10002,"路径不存在,请检查路径是否正确"),
DEFAULT_FAIL(10003,"未知异常,请稍后再试"),
DECRYPT_ERROR(10004,"解密出错"),
;
/**
* 错误码
*/
private int code;
/**
* 错误描述
*/
private String msg;
ErrorCodesEnum(int code, String msg) {
this.code = code;
this.msg = msg;
}
public int getCode() {
return code;
}
public String getMsg() {
return msg;
}
}
2.Controller层写法
/**
* GET测试接口
* @return
*/
@GetMapping(value = "/testGetNoParam")
public BaseRspVo testGet(){
DemoEntity demoEntity = new DemoEntity();
demoEntity.setName("123");
return new BaseRspVo<>(demoEntity);
}
正常返回数据为
{
"success": true,
"msg": "成功",
"errorCode": 10000,
"data": {
"name": "123"
}
}
能够做到统一返回,异常返回直接 new BaseRspVo(ErrorCodesEnum.对应的异常枚举); 异常返回数据:
{
"success": false,
"msg": "未知异常,请稍后再试",
"errorCode": 10003,
"data":null
}
后台收到对应的异常码值,可以快速定位到问题。 3.其他,还可以根据HandlerMethodReturnValueHandler来统一封装返回对象 完成后,Controller层写法为
/**
* GET测试接口
* @return
*/
@TestRspBody
@GetMapping(value = "/testGetNoParam")
public DemoEntity testGet(){
DemoEntity demoEntity = new DemoEntity();
demoEntity.setName("123");
return demoEntity;
}
返回结果与之前的写法一样,具体参考
{
"success": true,
"msg": "成功",
"errorCode": 10000,
"data": {
"name": "123"
}
}