前言:
前段时间接手了一个老项目,现在需要在此项目中添加一些新的需求,同事在开发过程中遇到了一些问题?
1.成功的状态到底是200还是0啊,订单系统200代表成功,而会员系统却是0代表成功。2.接口返回的结果中,有些是用msg字段表示描述,有些又是用desc字段描述,前段处理起来比较麻烦能不能统一。3.错误提示信息需要支持国际化。其实这些问题,归根究底还是代码规范问题,我们需要将接口定义和全局异常统一处理,历史项目10多个工程,难道每个工程都去实现一遍,答案可定是不可能的。
1、解决方案定义公共模块,实现统一接口定义规范和异常处理,其他的系统进行依赖和扩展即可。
2、具体实现 2.1 定义状态码统一接口 2.2 公共模块状态码枚举类 2.3 定义全局自定义异常 2.4 定义统一接口格式输出类个人建议:统一接口输出类不要定义为泛型类型
2.5 定义统一接口格式输出类上述定义已经可以实现全局接口和异常的统一处理,但是存在的如下问题
每个controller都需要返回Reesult类型,且每个方法都需要返回Result.success()或者Result.success(data)的结果,有点重复,需要进行优化。
2.6 接口统一输出优化实现方式只需要实现ResponseBodyAdvice接口,重写beforeBodyWrite方法接口。
经过优化后,controller输出可以根据业务的需求定义输出对象。
2.7 子系统如何实现子系统引入common的jar包,
3、子系统定义状态码,实现BaseResultCode接口定义异常处理类,继承公共异常处理类SysExceptionHandler
子系统使用示例:
经过相关项目的重构,已经解决了第一个和第二问题,关于第三个国际化问题,将在后续的文章中讲解。
到此这篇关于Spring Boot统一接口返回以及全局异常处理的文章就介绍到这了,更多相关Spring Boot异常处理内容请搜索七叶笔记以前的文章或继续浏览下面的相关文章希望大家以后多多支持七叶笔记!