返回数据格式
前端请求方式
前端请求按照四类划分:
- 查询用
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);
}