JavaWeb必须全局处理响应给外部的数据,分为两个部分:
- 全局处理响应
- 后端正常响应时要全局性地自动封装公共响应类。
- 全局处理异常
- 后端抛异常时也要全局性地自动封装公共响应类。
为什么进行全局响应处理?
在实际开发中,后端给前端的响应值必须要有一层封装,封装里边有状态码、错误信息、接口数据等。前端会先判断状态码,如果是成功,则获取数据;如果是失败,直接将错误信息提示给用户。这样做的好处是。
- 方便前后端交互
- 有了这个公共的响应值,前后端交互会变得统一,这样会很便捷高效,会减少很多问题。
- 方便feign调用
- 这个公共响应值也会作为feign的公共响应,便于调用方统一解析。
Java初级开发的写法
Controller所有方法都手动封装:ResultWrapper.success(data)。
Java中高级的写法
用AOP进行全局自动处理,Controller里不需要任何改动。
初级和高级写法的对比
封装响应值的操作,最优雅的做法是Java中高级的那种全局处理,因为这个公共响应体是个业务无关的东西。如果不全局处理,会有如下问题:
- 代码繁琐
- 会有人会直接返回数据,不封装
- 会有人直接将数据在不封装的情况下给前端,或提供给别人!导致项目不统一,难以维护。
- 如果有报错,无法将错误提示给调用方。因为没有封装的话,无法放到错误信息里!
上边这些问题会导致:项目问题很多、bug很多、无法维护。
为什么要全局处理异常?
跟全局处理响应类似,后端抛异常时也要统一响应给前端。另外,全局处理异常还有如下优点:
- 减少代码量
- 如果不全局处理异常,那么需要自己去try catch,然后自己封装公共响应类。
- 便于维护、便于添加更多功能
- 添加全局异常处理后,可以在全局处理的地方做如下重要的处理:
- 1.统一将日志上传到ES等,便于排查问题。
- 2.可以监控指定的异常信息,进行统一处理,比如:将异常信息邮件通知管理员
请先
!