发明内容
为了克服现有技术的不足,本发明的目的在于提供一种数据校验方法和系统,实现了校验逻辑与调用端和被调用端中的业务逻辑分开,并且为调用端和被调用端实现了双层校验方法,提高了安全性。
为解决上述问题,本发明所采用的技术方案如下:
方案一:
一种数据校验方法,应用于接口代理端,接口代理端中包括调用端校验模块和被调用端校验模块,包括以下步骤:
S1、调用端校验模块通过伪接口接收调用端所发送的调用请求并从调用请求中获取待校验数据;
S2、调用端校验模块从被调用端中加载预设的校验规则并生成相应的校验实现逻辑,根据校验实现逻辑对待校验数据进行校验;
S3、调用端校验模块判断校验是否通过,若是,则将校验通过的数据记为第一合法数据并发送至被调用端校验模块,若否,则返回校验失败的数据至调用端;
S4、被调用端校验模块从被调用端中加载预设的校验规则并生成相应的校验实现逻辑,根据校验实现逻辑对第一合法数据进行校验;
S5、被调用端校验模块判断校验是否通过,若是,则将校验通过的数据记为第二合法数据并发送至被调用端的接口,若否,则返回校验失败的数据至调用端。
优选的,所述接口代理端为根据调用端和被调用端而预先设定的。
优选的,所述接口代理端还包括数据返回模块,在步骤S5之后还包括:
S6、数据返回模块接收被调用端经过业务处理后的数据并发送至调用端。
优选的,所述校验实现逻辑是根据校验规则利用指定的程序语言所实现的校验逻辑。
方案二:
一种数据校验系统,应用于接口代理端,接口代理端中包括调用端校验模块和被调用端校验模块,包括以下单元:
待校验数据获取单元,设于调用端校验模块,用于通过伪接口接收调用端所发送的调用请求并从调用请求中获取待校验数据;
第一校验输入单元,设于调用端校验模块,用于从被调用端中加载预设的校验规则并生成相应的校验实现逻辑,根据校验实现逻辑对待校验数据进行校验;
第一校验判断单元,设于调用端校验模块,用于判断校验是否通过,若是,则将校验通过的数据记为第一合法数据并发送至被调用端校验模块,若否,则返回校验失败的数据至调用端;
第二校验输入单元,设于被调用端校验模块,用于从被调用端中加载预设的校验规则并生成相应的校验实现逻辑,根据校验实现逻辑对第一合法数据进行校验;
第二校验判断单元,设于被调用端校验模块,用于判断校验是否通过,若是,则将校验通过的数据记为第二合法数据并发送至被调用端的接口,若否,则返回校验失败的数据至调用端。
优选的,所述接口代理端为根据调用端和被调用端而预先设定的。
优选的,所述接口代理端还包括数据返回模块,在第二校验判断单元之后还包括:
数据返回单元,设于数据返回模块,用于接收被调用端经过业务处理后的数据并发送至调用端。
优选的,所述校验实现逻辑是根据校验规则利用指定的程序语言所实现的校验逻辑。
相比现有技术,本发明的有益效果在于:1、将校验逻辑从业务逻辑中分离出来,将原来的校验程序编码变为校验规则的配置,降低了程序的耦合度,从而有利于程序的维护和拓展,当校验需求变更,将不再需要修改程序代码,而只需要增减或修改校验逻辑;2、校验规则直接定义在被调用端,只需要一次定义便可满足双层校验,而且由被调用端定义校验规则,可以保证校验是以被调用端校验为驱动的,增强了调用安全性。
具体实施方式
下面,结合附图以及具体实施方式,对本发明做进一步描述:
参考图1和2,一种数据校验方法,应用于接口代理端,接口代理端设置于调用端和被调用端之间,而且是预先被分配至调用端和被调用端之间,接口代理端中包括调用端校验模块和被调用端校验模块。包括以下步骤:
S1、调用端校验模块通过伪接口接收调用端所发送的调用请求并从调用请求中获取待校验数据。
S2、调用端校验模块从被调用端中加载预设的校验规则并生成相应的校验实现逻辑,根据校验实现逻辑对待校验数据进行校验。
S3、调用端校验模块判断校验是否通过,若是,则将校验通过的数据记为第一合法数据并发送至被调用端校验模块,若否,则返回校验失败的数据至调用端。
S4、被调用端校验模块从被调用端中加载预设的校验规则并生成相应的校验实现逻辑,根据校验实现逻辑对第一合法数据进行校验。
S5、被调用端校验模块判断校验是否通过,若是,则将校验通过的数据记为第二合法数据并发送至被调用端的接口,若否,则返回校验失败的数据至调用端。
S6、数据返回模块接收被调用端经过业务处理后的数据并发送至调用端。
其中,在步骤S1中,调用端校验模块通过自身的伪接口接收调用端所发送的调用请求,伪接口与被调用端的接口的原理相似,但并不是真正的接口,通过伪接口获取调用请求中的数据,具体是获取其中的待校验数据。
在步骤S2中,获取了待校验数据后,则从被调用端中加载预设的校验规则,并根据该校验规则生成相应的校验实现逻辑,再根据校验实现逻辑对待校验数据进行校验。具体的,校验规则为预先定义于被调用端中,加载了校验规则后就必须要针对预先定义好的所有校验规则进行实现,例如,校验规则有5条,则具体的校验实现逻辑也必须根据该5条校验规则实现。而校验实现逻辑是指根据校验规则利用指定的程序语言所实现的校验逻辑,指定的程序语言为该接口代理端所预先指定的,例如该接口代理端中指定的语言可以是JAVA,也可以是Javascript等等。
下面举例说明校验规则和校验实现逻辑的关系:
校验规则中定义了:通过注解定义输入参数name不能为空。
则该校验规则为:
NotNull
privateStringname;
然后实现时就根据该校验规则进行逻辑实现。
例如该接口代理端定义了使用JAVA语言实现:
publicbooleanNotNull(value,param){
returnvalue!=null;
}。
再例如该接口代理端定义了使用Javascript语言实现:
functionNotNull(value,param){
return(value&&(value.toString().length>0));
}。
生成了校验实现逻辑后,便可以对输入的待校验参数进行校验,待校验参数可以是通过Json,xml等格式进行传输,例如:
Json:{name:'test',content:123};
xml:<name>test</name><content>123</content>。
在步骤S3中,调用端校验模块便判断校验是否通过,若果通过,则将校验通过的数据发送至被调用端校验模块,为了方便下面的表达,将这里校验通过的数据记为第一合法数据;若没有通过,则将校验失败的数据返回至调用端,告诉调用端调用失败。
在步骤S4中,被调用端校验模块也从被调用端中加载预设的校验规则并生成相应的校验实现逻辑,理论上,该步骤是对输入的数据进行二次校验,其加载的预设的校验规则与调用端校验模块所加载的相同。设置二次校验的原因是:调用端还是有可能绕过调用端校验模块的校验而视图直接将数据发送至被调用端,也即是说被调用端校验模块接收到的数据有可能不是第一合法数据,则该被调用端校验模块实际上是数据到达被调用端接口的必经之路,被调用端校验模块将真正的被调用端接口屏蔽,数据只有通过被调用端校验模块才能由被调用端校验模块放行。因此,对应于被调用端接口设置被调用端校验模块是必须的,最终的数据校验还是以被调用端校验模块的校验为准,也正因为如此,校验规则是定义在被调用端,而不是定义在调用端。而针对调用端设置调用端校验模块是是出于对希望合法调用接口的调用者考虑的,可以减少无效调用,降低网络和计算资源消耗。
在步骤S5中,被调用端校验模块判断校验是否通过,若是,则将通过的数据发送至被调用端接口,此时,被调用端接口才被真正调用,对输入的数据进行相应的业务逻辑处理。因为调用端接口一旦被真正调用,则表示此次调用的数据是符合预先定义的校验规则的,是合法的,在被调用端中不需要再关心数据的合法性问题。
在步骤S6中,被调用端经过业务处理后会生成返回数据,此时数据返回模块接收被调用端的返回数据并发送至调用端。再由调用端对返回的数据进行相应的业务处理。
本发明的优点在于:1、将校验逻辑从业务逻辑中分离出来,将原来的校验程序编码变为校验规则的配置,降低了程序的耦合度,从而有利于程序的维护和拓展,当校验需求变更,将不再需要修改程序代码,而只需要增减或修改校验逻辑;2、校验规则直接定义在被调用端,只需要一次定义便可满足双层校验,而且由被调用端定义校验规则,可以保证校验是以被调用端校验为驱动的,增强了调用安全性。
对应于上述的数据校验方法,本发明还公开了一种数据校验系统,应用于接口代理端,接口代理端中包括调用端校验模块和被调用端校验模块,包括以下单元:
待校验数据获取单元,设于调用端校验模块,用于通过伪接口接收调用端所发送的调用请求并从调用请求中获取待校验数据;
第一校验输入单元,设于调用端校验模块,用于从被调用端中加载预设的校验规则并生成相应的校验实现逻辑,根据校验实现逻辑对待校验数据进行校验;
第一校验判断单元,设于调用端校验模块,用于判断校验是否通过,若是,则将校验通过的数据记为第一合法数据并发送至被调用端校验模块,若否,则返回校验失败的数据至调用端;
第二校验输入单元,设于被调用端校验模块,用于从被调用端中加载预设的校验规则并生成相应的校验实现逻辑,根据校验实现逻辑对第一合法数据进行校验;
第二校验判断单元,设于被调用端校验模块,用于判断校验是否通过,若是,则将校验通过的数据记为第二合法数据并发送至被调用端的接口,若否,则返回校验失败的数据至调用端。
优选的,所述接口代理端为根据调用端和被调用端而预先设定的。
优选的,所述接口代理端还包括数据返回模块,在第二校验判断单元之后还包括:
数据返回单元,设于数据返回模块,用于接收被调用端经过业务处理后的数据并发送至调用端。
优选的,所述校验实现逻辑是根据校验规则利用指定的程序语言所实现的校验逻辑。
对本领域的技术人员来说,可根据以上描述的技术方案以及构思,做出其它各种相应的改变以及形变,而所有的这些改变以及形变都应该属于本发明权利要求的保护范围之内。