本文章主要讲述validation(prority翻译),生活百科网主要提供生活常识,数码科技,有氧运动,家庭美食,科普答疑,衣物护理,生活乐趣等生活百科知识
互联网公司里边,有很多运营系统,俗称后台管理系统。
如你在电商app上面领取优惠券、领取红包、预约商品等,都是在参与由运营系统创建的一个个的活动,即优惠券活动、红包活动、预约活动等。
而这些活动的创建、修改、关闭,都有严谨的数据校验,否则运营人员稍有不慎,就容易产生脏数据,引发到线上,俗称线上事故,如价格门等。
如何安全、高效地确保数据的正确性呢,这就涉及到本文要分享的一个组件——validation。
先说下常规方案。
如我们在做数据校验的时候,如果不经过构思,或者引入其他成熟的工具,经常会导致写了大量的if、else语句,代码可读性差,且十分不利于后续的维护。
如我们对一个活动名称的长度的校验,要求在5-20个字符之间,常规的写法可能如下:
一两个字段还好,但实际业务往往几十个字段,业务性就十分重了,这样代码读起来十分痛苦。
我们带来引入validation之后的优化方案。
1.引入依赖
SpringBoot已有validation的starter了,我们引入即可开箱即用。
2.定义入参
入参必须为对象的形式,我们方可在对象的属性上使用注解,定义校验规则。
入参对象的name字段,我们通过@Size注解,规定了长度最长为20个字符,最短为5个字符
2.编写接口
常规创建一个SpringMVC的Controller,编写每个方法就是一个个的http接口。
我们定义了一个活动创建的接口,接口入参为上述的活动入参对象,打上@Valid注解,表示会对对象的属性,根据编写的规则进行校验。
3.测试校验
我们要求活动名称的字符在5-20个字符之间。我们现在输入3个字符,发起一次http请求,可以看到,返回400的状态码,请求失败了。
400状态码(type=Bad Request, status=400),即请求错误的意思。
a*3
我们修改name的长度为6个,即在5-20之间,再次发起该接口的http请求,可以看到,返回的状态码是200,请求成功。
a*6
200 OK(成功) 服务器已成功处理了请求。
是不是很简单呢,逻辑也很清晰,代码也十分具有可维护性。
其实自己实现这个校验也不难,我们可以定义一些自己的注解,同样在需要校验的字段上打上我们的
注解
。校验的时候通过反射即可获取注解下面字段的
值
、校验
规则
,再将校验结果返回出去即可。只不过现在不建议自己造轮子,有现成的成熟开源,我们尽量用就是了。
标签:validation