Skip to content

返回数据格式

前端请求方式

前端请求按照四类划分:

  • 查询用GET方法
  • 删除用DELETE方法
  • 新增、高级查询用POST方法
  • 修改采用PUT方法

返回格式要求

PUT方法

1、需要页面提醒的格式(需要前端弹出页码提醒提交成功):

javascript
{
   code: xxxx,  //状态码
   alert: x,   // 提示标识0,前端根据此标识是否显示msg弹出框,1显示,0不显示
   msg: '提示信息'
}

2、无页面提醒:

javascript
{
   code: xxxx,  //状态码
   alert: x, // 提示标识0,前端根据此标识是否显示msg弹出框,1显示,0不显示
   msg: '提示信息',
   data: {}/[] 数据
}

POST方法

1、需要页面提醒的格式(需要前端弹出页码提醒提交成功):

javascript
{
   code: xxxx,  //状态码
   alert: x, // 提示标识0,前端根据此标识是否显示msg弹出框,1显示,0不显示
   msg: '提示信息'
}

2、无页面提醒:

javascript
{
   code: xxxx,  //状态码
   alert: x, // 提示标识0,前端根据此标识是否显示msg弹出框,1显示,0不显示
   msg: '提示信息',
   data: {}/[] 数据
}

GET方法

javascript
{
   code: xxxx,  //状态码
   alert: 0,  //get方法没默认为0,0不显示弹框
   msg: '提示信息',
   data: {}/[] 数据
}

DELET方法

javascript
{
   code: xxxx,  //状态码
   alert: x,  //提示标识0,前端根据此标识是否显示msg弹出框,1显示,0不显示
   msg: '提示信息'
}

分页查询

查询方式接口:api/xxx?pageNum=1&pageSize=10

javascript
{
    code: xxxx,  //状态码
    msg: '提示信息',
    alert: x, // 提示标识0,1,操作成功后,根据此标识字段判断显示框架msg还是自定义msg
    data: {
             "total"1
             "rows":[{}],
             "pageaNum":1
           }
}

返回结果封装

javascript
 public Object beforeBodyWrite(Object object, @NonNull MethodParameter methodParameter, @NonNull MediaType mediaType,
                                  @NonNull Class<? extends HttpMessageConverter<?>> aClass, @NonNull ServerHttpRequest serverHttpRequest,
                                  @NonNull ServerHttpResponse serverHttpResponse) {

        // 返回值为 Object 类型  并且返回为空是  AbstractMessageConverterMethodProcessor#writeWithMessageConverters 方法
        // 无法触发调用本类的 beforeBodyWrite 处理,开发在 Controller 尽量避免直接使用 Object 类型返回。

        if (object == null) {
            // 当 o 返回类型为 string 并且为null会出现 java.lang.ClassCastException: Result cannot be cast to java.lang.String
            if (JAVA_LANG_STRING.equals(methodParameter.getParameterType().getName())) {
                return Result.ofSuccess().toJsonString();
            }
            return Result.ofSuccess();
        }

        if (object instanceof Result) {
            return object;
        }

        if (Objects.requireNonNull(serverHttpRequest.getMethod()).matches(HttpMethod.POST.toString())
                || Objects.requireNonNull(serverHttpRequest.getMethod()).matches(HttpMethod.PUT.toString())
                || Objects.requireNonNull(serverHttpRequest.getMethod()).matches(HttpMethod.DELETE.toString())) {

            if (object instanceof String) {
                if (((String) object).contains("alert")){
                    JSONObject jsonObject = JSONObject.parseObject(object.toString());
                    return (StringUtils.isNotEmpty((String) object)) ? Result.ofSuccess(jsonObject.getString("alert"),jsonObject.getString("msg")) : Result.ofFail("500", (String) object).toJsonString();
                }else {
                    return (StringUtils.isEmpty((String) object)) ? Result.ofSuccess("1").toJsonString() : Result.ofFail("500", (String) object).toJsonString();
                }

            }

            if (object instanceof Integer) {
                return ((Integer) object > 0) ? Result.ofSuccess("1") : Result.ofFail(CommonErrorCode.COMMAND_ERROR);
            }



            if (object instanceof Boolean) {
                return ((Boolean) object) ? Result.ofSuccess("1") : Result.ofFail(CommonErrorCode.COMMAND_ERROR);
            }
       
        }

        //执行字典后返回Page类
        if (object instanceof Page) {
            return Result.ofSuccess(object);
        }

        //用于list分页对象的转换,可能运行不到
        if (object instanceof List) {
            List<?> list = (List<?>) object;
            if (list.size() == 1) {
                if (list.get(0) instanceof Page) {
                    return Result.ofSuccess(list.get(0));
                }
            }
        }

        //用于object错误返回码拦截处理
        if (object instanceof LinkedHashMap) {
            HashMap map = (HashMap) object;
            if(map.containsKey("status")&&map.containsKey("error")){
                if(500 == Integer.valueOf(map.get("status").toString())) {
                    if(map.get("message").toString().contains("java.sql.SQLSyntaxErrorException")){
                        return Result.ofFail("500", "数据库查询异常");
                    }
                    return Result.ofFail("500", map.get("message").toString());
                }
            }
        }

        return (object instanceof String) ? Result.ofSuccess(object).toJsonString() : Result.ofSuccess(object);
    }