大家好,我是捡田螺的小男孩。,今天这篇比较简单~。日常工作中,我们开发接口时,一般都会涉及到参数校验、异常处理、封装结果返回等处理。,如果每个后端开发在参数校验、异常处理等都是各写各的,没有统一处理的话,代码就不优雅,也不容易维护。所以,作为一名合格的后端开发工程师,我们需要统一校验参数,统一异常处理、统一结果返回,让代码更加规范、可读性更强、更容易维护。,假设小田螺实现一个注册用户的功能,在controller 层,他会先进行校验参数,如下:,以上代码有什么问题嘛?其实没什么问题,就是校验有点辣眼睛。正常的添加用户业务还没写,参数校验就一大堆啦。假设后来,小田螺又接了一个需求:编辑用户信息。实现编辑用户信息前,也是先校验信息,如下:,我们可以使用注解的方式,来进行参数校验,这样代码更加简洁,也方便统一管理。实际上, spring,boot有个validation的组件,我们可以拿来即用。引入这个包即可:,引入包后,参数校验就非常简洁啦,如下:,然后在UserParam参数对象中,加入@Validated注解哈,把错误信息接收到BindingResult对象,代码如下:,如果你在你们项目代码中,看到controller 层报文返回结果,有这样的:,也有这样的:,显然,如果接口返回结果不统一,前端处理就不方便,我们代码也不好维护。再比如小田螺喜欢用Result处理结果,大田螺喜欢用Response处理结果,可以想象一下,这些代码有多乱。,所以作为后端开发,我们项目的响应结果,需要统一标准的返回格式。一般一个标准的响应报文对象,都有哪些属性呢?,响应状态码一般用枚举表示哈:,因为返回的数据类型不是确定的,我们可以使用泛型,如下:,有了统一的响应体,我们就可以优化一下controller 层的代码啦:,日常开发中,我们一般都是自定义统一的异常类,如下:,在controller 层,很可能会有类似代码:,这块代码,没什么问题哈,但是如果try...catch太多,不是很优雅。,可以借助注解@RestControllerAdvice,让代码更优雅。@RestControllerAdvice是一个应用于Controller层的切面注解,它一般配合@ExceptionHandler注解一起使用,作为项目的全局异常处理。我们来看下demo代码哈。,还是原来的UserController,和一个会抛出异常的userService的方法,如下:,我们再定义一个全局异常处理器,用@RestControllerAdvice注解,如下:,我们有想要拦截的异常类型,比如想拦截BizException类型,就新增一个方法,使用@ExceptionHandler注解修饰,如下:,本文大家学到了哪些知识呢?,
© 版权声明
文章版权归作者所有,未经允许请勿转载。