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"
  }
}