Skip to content

统一返回值

概述

统一封装了一个组件 pangea-common-exception,包含统一返回包装功能。
在前后端分离的微服务项目中,通常返回的时候会告知前台返回是否成功以及状态码等信息。统一的返回格式不仅使接口更加美观,而且便于前端统一处理很多东西,避免很多问题的产生。

添加依赖

xml
<parent>
	<groupId>com.hisense.pangea</groupId>
	<artifactId>pangea-common-exception</artifactId>
	<!--该处使用当前最新版本号-->
	<version>${pangea.version}</version>
</parent>

统一返回值

快速上手

需要做统一返回处理时,无需做多余处理,只关注业务逻辑即可,Controller层接口示例如下:

java
@GetMapping("list")
@Paginate
public List<SysUser> list(SysUser sysUser) {
	return sysUserService.selectUserList(sysUser);
}

默认统一返回值示例:

json
{
    "code":"0",             // 状态码
    "data":{                // 数据
        "pageNum":1,
        "rows":[
            {
                "userId":"2873",
                "userName":"kermit"
            }
        ],
        "total":"1"
    },
    "msg":"操作成功",        // 描述
    "ts":"1602644688912"    // 时间戳
}

对于返回类型为String类型,如果用户想要自定义返回值中的msg字段,非框架自带的成功调用后台时的返回值msg:操作成功 可在controller中增加BaseController中的ofSuccess(String msg),这里msg为想要界面提示的信息

java
 protected String ofSuccess(String msg){
        JSONObject jsonObject = new JSONObject();
        jsonObject.put("msg",msg);
        jsonObject.put("alert","1");
        return jsonObject.toString();
    }

返回值示例:

json
{
    "code":"0",
    "alert":"1",
    "msg":"本操作已完成,请进行下一步操作",
    "ts":"1602644688912"
}

取消统一返回值处理

不需要做统一返回处理时,支持在yaml文件中配置或方法上添加注解,取消统一返回值处理:

  1. yaml文件中进行「包层级」或「类层级」的配置,不做统一返回处理:

    yaml
    pangea:
      dispose:
        #不做统一返回处理的包
        advice-filter-package:
          - org.springframework.security.oauth2
          - org.springframework.web.client
        #不做统一返回处理的类
        advice-filter-class:
          - com.hisense.pangea.system.controller.SysUserController
  2. 在方法上使用注解@IgnoreResponseAdvice(errorDispose = false),不做统一返回处理

    java
    @IgnoreResponseAdvice(errorDispose = false)
    @GetMapping("list")
    @Paginate
    public List<SysUser> list(SysUser sysUser) {
       return sysUserService.selectUserList(sysUser);
    }
  3. 在Controller类上使用注解@IgnoreResponseAdvice(errorDispose = false),整个Controller中的方法都不做统一返回处理

    java
    @RestController
    @RequestMapping("/demo")
    @IgnoreResponseAdvice
    public class DemoController extends BaseController {
         ... ....
    }

不做统一返回处理时,返回示例:

json
{
    "pageNum":1,
    "rows":[
        {
            "userId":"2873",
            "userName":"kermit"
        }
    ],
    "total":"1"
}

参考文档