统一返回值
概述
统一封装了一个组件 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文件中配置或方法上添加注解,取消统一返回值处理:
在
yaml
文件中进行「包层级」或「类层级」的配置,不做统一返回处理:yamlpangea: dispose: #不做统一返回处理的包 advice-filter-package: - org.springframework.security.oauth2 - org.springframework.web.client #不做统一返回处理的类 advice-filter-class: - com.hisense.pangea.system.controller.SysUserController
在方法上使用注解
@IgnoreResponseAdvice(errorDispose = false)
,不做统一返回处理java@IgnoreResponseAdvice(errorDispose = false) @GetMapping("list") @Paginate public List<SysUser> list(SysUser sysUser) { return sysUserService.selectUserList(sysUser); }
在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"
}
参考文档