瞧瞧人家用SpringBoot写的后端API接口,那叫一个优雅
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了瞧瞧人家用SpringBoot写的后端API接口,那叫一个优雅相关的知识,希望对你有一定的参考价值。
参考技术A假设实现一个注册用户的功能,在controller 层,他会先进行校验参数,如下:
以上代码有什么问题嘛? 其实没什么问题,就是校验有点辣眼睛 。正常的添加用户业务还没写,参数校验就一大堆啦。假设后来,又接了一个需求:编辑用户信息。实现编辑用户信息前,也是先校验信息,如下:
我们可以使用注解的方式,来进行参数校验,这样代码更加简洁,也方便统一管理。实际上, spring boot 有个 validation 的组件,我们可以拿来即用。引入这个包即可:
引入包后,参数校验就非常简洁啦,如下:
然后在 UserParam 参数对象中,加入 @Validated 注解哈,把错误信息接收到 BindingResult 对象,代码如下:
如果你在你们项目代码中,看到controller 层报文返回结果,有这样的:
也有这样的:
显然,如果接口返回结果不统一,前端处理就不方便,我们代码也不好维护。再比如有的人喜欢用 Result 处理结果, 有点人 喜欢用 Response 处理结果,可以想象一下,这些代码有多乱。
所以作为后端开发,我们项目的响应结果,需要 统一标准的返回格式 。一般一个标准的响应报文对象,都有哪些属性呢?
响应状态码一般用枚举表示哈:
因为返回的数据类型不是确定的,我们可以使用泛型,如下:
有了统一的响应体,我们就可以优化一下controller 层的代码啦:
日常开发中,我们一般都是自定义统一的异常类,如下:
在controller 层,很可能会有类似代码:
这块代码,没什么问题哈,但是如果 try...catch 太多,不是很优雅。
可以借助注解 @RestControllerAdvice ,让代码更优雅。 @RestControllerAdvice 是一个应用于 Controller 层的切面注解,它一般配合 @ExceptionHandler 注解一起使用,作为项目的全局异常处理。我们来看下demo代码哈。
还是原来的 UserController ,和一个会抛出异常的userService的方法,如下:
我们再定义一个全局异常处理器,用 @RestControllerAdvice 注解,如下:
我们有想要拦截的异常类型,比如想拦截 BizException 类型,就新增一个方法,使用 @ExceptionHandler 注解修饰,如下:
以上是关于瞧瞧人家用SpringBoot写的后端API接口,那叫一个优雅的主要内容,如果未能解决你的问题,请参考以下文章