Java后端Controller参数校验的一些干货及问题~
你们好,我是金金金。
场景
先看如下一张图,这是一个控制器里面的一个方法,第一眼是不是就感觉代码量非常多?而且随着参数越来越多 你则需要写
n
个if else
来完成校验,属实是麻烦而且不够优雅
JSR303
校验
仔细认真看,更容易理解吸收,想想什么层面需要做校验呢?
- 前端请求后端接口传输参数,是在
controller
中校验还是在Service
中校验?
都需要校验,只是分工不同。
-
Contoller
中校验请求参数的合法性,包括:必填项校验,数据格式校验,比如:是否是符合一定的日期格式,等。 -
Service
中要校验的是业务规则相关的内容,比如:课程已经审核通过所以提交失败。 -
Service
中根据业务规则去校验不方便写成通用代码,Controller
中则可以将校验的代码写成通用代码。
-
在
Service
层,校验是和业务逻辑紧密相关的。因为不同的业务场景下,校验规则可能不同,很难将这些规则抽象成通用的代码。 比如,在处理订单的Service
层中,校验的逻辑可能会涉及多个业务条件和数据库查询,这些条件可能只在特定的业务场景下适用,难以通用化。- 所以一般
service
层都是手动if
校验
- 所以一般