一、建立统一的Result对象(便于统一处理请求结果)
1、赋予code、msg、data属性
2、data的类型为范型
3、代码参考:

  public class Result<T> {private Integer code;// 错误码private String msg; // 提示信息private T data; // 任意对象gettter()setter()}结果内容格式:{code:404,msg:“地址错误,无法找到方法”,data:null}{code:404,msg:“地址错误,无法找到”,data:{probe:{...},mrf:{...}}}

二、错误码统一管理(统一管理,方便维护)
1、创建enums包,包下存放各枚举类
2、针对上文示例:创建错误码枚举类ResultCodeEnum
3、代码参考

 public enum ResultCodeEnum{SUCCESS(0,“请求成功”),SYSTEM_ERROR(-1,“系统错误”),UNFIND_METHOD(404,“地址错误,无法找到方法”),PARSE_ERROR(343, “数据解析异常”),PARSE_TIMEOUT(443,“数据解析超时”),MISS_CONFIG(302, “数据配置缺失”),MISS_CELL(303,“数据小区信息缺失”),;private Integer code;private String msg;ResultCodeEnum(Integer code, String msg){this.code = code;this.msg = msg;}gettter(); // 枚举类常为引用,一般不需要setter()}

三、利用AOP思想,统一处理异常
1、创建exception包,包下存放自定义异常
2、创建Aspect包,包下存放AOP切面文件
3、AOP使用方式简介
3-1、pom文件引入依赖
3-2、创建HttpAspect类,加入注解@Aspect 同时需要加@Component放到容器中去
3-3、抽取切点方法,括号内的。。代表任意参数
代码参考

 @PointCut(“execution(public * com.test.rumen.demo.controller.*(..))”)public void cut(){}@Before(“cut()”)// 在接口执行前,定义了切点就可以不写全地址了public void doBefore(){// 可以用作权限校验,表单验证等// 可以做请求记录,请求地址,ip,参数等等}@After(“cut()”)//在接口执行后public void doAfter(){}@AfterReturning(returning = “object”,pointcut=“cut()”)public void doAfterReturning(object obj){// 可以做结果记录,结果处理等}
4、自定义的faultException 加入自己需要定义的内容
代码参考
public class FaultException extends RuntimeException{private Integer code;public FaultException (ResultCodeEnum enum){super(enum.getMsg());this.code = enum.getCode();}gettter()setter()
}
5、方法执行中如果有异常,可抛出自定义异常
6、新建Exceptionhandle类,处理接到的异常
代码参考
@ControllerAdvice
public class ExceptionHandle{public Result dealWithResult(Exception e){if(e instanceof FaultException ){FaultException  exception = (FaultException )e;return ResultUtil.error(exception.getCode(),exception.getMessage())}return ResultUtil.error(-1,"系统错误");}
}public class ResultUtil{public static Result success(Object obj){Result result = new Result();result.setCode(0);result.setMsg("成功");result.setData(obj);return result;}public static Result error(Integer code, String msg){Result result = new Result();result.setCode(code);result.setMsg(msg);return result ;}
}

接口可维可测;统一管理相关推荐

  1. 自动化封装--统一管理中间变量,解决用例之间通过类变量出现重复加载

    冗余的代码:当代码出现了很多相同或者相似的地方的时候,那么就需要封装. 目的:简化接口自动化的落地实施,统一化,标准化.企业期望:降低自动化成本,实现就是不懂代码的团队也能够通过框架实现接口自动化. ...

  2. android自定义dialog开源库,android-dialog: 此框架提供五种对话框的显示,并支持对话框的扩展,目的是为了提供对话框的统一管理,并提供对话框显示的公共接口。...

    android-dialog 此框架提供七种对话框的显示,并支持对话框的扩展,目的是为了提供对话框的统一管理,并提供对话框显示的公共接口. LoadingDialog:正在加载对话框 MessageD ...

  3. openglshader实现虚拟场景_云桌面,实现办公终端的统一管理与运维

    随着无纸化办公和智能化办公的不断推进,在办公过程中传统PC电脑的缺点愈发凸显.传统电脑的性能会随着使用时长增加而降低,系统维护处理时效性较弱,出现问题需要运维人员到现场解决,费时费力.如果出现更换设备 ...

  4. Vue + webpack 项目配置化、接口请求统一管理

    准备工作 需求由来: 当项目越来越大的时候提高项目运行编译速度.压缩代码体积.项目维护.bug修复......等等成为不得不考虑而且不得不做的问题.  又或者后面其他同事接手你的模块,或者改你的bug ...

  5. 前端项目统一管理API接口

    前端项目统一管理API接口 如今的前端框架层出不穷.应对的项目也是大小不一,微型的项目倒是无所谓文件结构,大多数项目我们都需要做到以下几点 规范文件目录,完善项目结构,以达到开发时思维清晰,错误定位准 ...

  6. axios二次封装以及API接口统一管理

    前端向服务器发送请求,使用的方法有很多: XMLHttpRequest.fetch.JQ.axios 1.axios二次封装 二次封装axios是为了请求拦截器.响应拦截器. 请求拦截器:可以在发送请 ...

  7. axios封装,api接口封装统一管理

    axios封装,api接口封装统一管理 一. axios说明 Axios 是一个基于 promise 的 HTTP 库,可以用在浏览器和 node.js 中. axios的封装和api接口的统一管理, ...

  8. 使用redis和mq完成接口的统一管理进化过程

    为了统一规范好系统与系统之间的接口调用关系,我们开发了"接口中心"这个服务.其主要作用是统一接口暴露,统一鉴权配置,统一日志记录,最后可以通过图形报表形成调用关系图. 那么我们在1 ...

  9. svn如何取消某个文件的版本管理_微服务架构如何统一管理工程配置文件

    面临的问题 在分布式微服务架构系统中,业务和系统功能被拆分成了几十甚至上百个服务实例.每个服务实例就是以往单体应用时代的一个独立部署的工程.每个工程都需要自己独立的启动加载和运行时配置文件. 在项目开 ...

  10. 托管式服务网格:多种类型计算服务统一管理的基础设施

    王夕宁 读完需要 8 分钟 速读仅需 3 分钟 作者简介:王夕宁 阿里云高级技术专家,阿里云服务网格产品ASM及Istio on Kubernetes技术负责人,专注于Kubernetes.云原生.服 ...

最新文章

  1. CV绿色的上限和下限
  2. 今晚直播 | 来自《简明的 TensorFlow 2》作者,Google开发者专家的分享
  3. mysql identifier name is too long_ORA-00972: identifier is too long 问题处理
  4. 6年Python开发,教你一天入门 Python
  5. 11 java基础之继承:区分子类方法中变量的三种变量
  6. qmainwindow 标题栏_QMainWindow菜单栏和工具栏
  7. python语言-Python语言的特点有哪些?
  8. 基于jQuery的响应式网站视频插件FitVids.js
  9. 基于QT和DCMTK的Dicom 图像浏览器---收尾二
  10. Linux系统CPU占用100%原因分析
  11. Vue 接入高德地图
  12. 计算机软科排名澳门科技大学,2016年软科中国两岸四地大学排名正式发布
  13. 【web】自定义协议Protocol URL
  14. python识别字符串码置_python 字符串内置方法整理
  15. 中国大学慕课浙江大学【C语言课程】-翁恺教授第4周编程练习数字特征值(5分)
  16. 07 Anykey图像优化及文字头像生成与加载
  17. iPhone X 的适配
  18. vue(slot-卡槽)
  19. Bat文件闪退_启动失败
  20. lucene3.0.3中的Spanquery和Spans介绍

热门文章

  1. 【论文研读】Category-level Adversaries for Semantics Consistent Domain Adaptation(cvpr2019)
  2. 360浏览器设置语言国际化
  3. word文字铺满页面_word如何把行铺满页面 怎样使word文档铺满页面
  4. springboot项目基础骨架搭建并完成基本增删改查及多种形式分页
  5. android lint
  6. 通过路由器管理界面刷openwrt
  7. jqGrid设置表格列的背景色
  8. 电脑消除,彻底清除电脑垃圾,让电脑运行更流畅!
  9. 计算机专业读研期间的规划,计算机专业研究生的读研规划
  10. VSTest.Console.exe 的使用