一种接口参数校验方法及组件与流程

文档序号:11654122阅读:314来源:国知局
一种接口参数校验方法及组件与流程

本发明涉及接口检验技术领域,尤其涉及一种接口参数校验方法及组件。



背景技术:

众所周知,只要有接口,就会有参数,然而便有了参数的校验。对于业务接口来说,业务代码应该是一目了然,只有业务相关的逻辑思路,而不应该存在大量的if-if来对参数或者数据本身的校验或者一些其他的处理,为了增强代码得可读性、可维护性,接口参数的校验处理是非常重要的。

当前很多流行的开源框架都会有自身的参数校验机制、比如struts2、springmvc的validator机制、hibernate-validator、commons-validator等;

对于很多情景,这些第三方组件无法满足我们的需要,比如参数的依赖关系等。它们都只是简单的提供校验参数字段的格式,并且这些校验器2020都是有状态的,导致校验的性能不好。对于一些大数据量的操作处理,就显得很吃力。对于互联网平台的高性能的追求,低效率的接口往往是不能适用的。

因此,本领域的技术人员亟需研究出一种可基于注解、json、xml多种格式对框架进行多样化实现,更好地支持参数的强依赖性,能够支持复杂的参数类型,统一接口开发模式标准,规范代码一致性,增强系统的稳定性、易维护性、健壮性,增强代码得可读性、可维护性,接口参数的更加准确地进行校验处理的接口参数校验方法及组件。



技术实现要素:

本发明要解决的技术问题是提供一种接口参数校验方法及组件,该接口参数校验方法可基于注解、json、xml多种格式对框架进行多样化实现,更好地支持参数的强依赖性,能够支持复杂的参数类型,统一接口开发模式标准,规范代码一致性,增强系统的稳定性、易维护性、健壮性,增强代码得可读性、可维护性,接口参数的更加准确地进行校验处理。

为解决上述技术问题,本发明提供了提供了一种接口参数校验方法,提供客户端、校验器及服务器,所述校验器包括注解解析模块、注解校验模块及校验规则生成模块,所述接口参数校验方法包括以下步骤:所述客户端请求服务端的一个接口,客户通过所述客户端对参数进行自定义,所述注解解析模块对参数进行解析并将解析结果数据发送给所述校验规则生成模块,所述校验规则生成模块根据所述解析结果数据生成自定义引用数据类型的比较规则,所述注解校验模块根据所述所述校验规则生成模块生成的比较规则的逐个属性,去参数对象中寻找与之相对应的属性,然后通过自定义的比较规则对属性的值进行比较,如果没有找到对应的属性或者与之对应的属性值不相同,则为校验失败,否则校验通过。

优选地,所述注解校验模块支持xml配置、json配置、以及基于java的自定义注解配置。

优选地,所述步骤“所述校验规则生成模块根据所述解析结果数据生成自定义引用数据类型的比较规则”的实现步骤包括:

所述校验规则生成模块根据所述解析结果数据生成实现基础类型自定义规则;

所述校验规则生成模块根据所述解析结果数据生成自定义校验规则;

其中,所述实现基础类型自定义规则包括must、int、strin、len、date、reg、long、float及double。

优选地,所述规则must的实现是:该规则指定字段是必要的,不能为null或空串;

所述规则int的实现是:该规则指定的字段非null或空串,则为int型数据,且在必须在规定大小内;

所述规则strin的实现是:该规则指定的字段如果非null或空串,则要求为指定字串数组中的一个;

所述规则len的实现是:该规则指定的字段非null或空串,要求为指定长度;

所述规则date的实现是:该规则指定的字段非null或空串,要求为指定日期格式;

所述规则reg的实现是:该规则指定的字段非null或空串,要求匹配指定正则表达式;

所述规则long的实现是:该规则指定的字段非null或空串,则为long型数据,且在必须在规定大小内;

所述规则float的实现是:该规则指定的字段非null或空串,则为float型数据,且在必须在规定大小内。

所述规则double的实现是:该规则指定的字段非null或空串,则为double型数据,且在必须在规定大小内。

优选地,所述步骤“所述校验规则生成模块根据所述解析结果数据生成自定义校验规则”的实现步骤包括:

所述校验规则生成模块定义validaterulehandler接口的规则对象与参数对象的逻辑;

根据规则对象与参数对象添加自定义规则,配置自定义规则的处理器的完整路径。

优选地,所述validaterulehandler接口的规则对象为ruleinfo对象,所述ruleinfo对象为需要校验业务接口的实现定义好的接口参数所生成的规则对象,所述参数对象为filedvalue-object对象,所述filedvalue-object对象为业务接口调用方所传的参数生成的参数对象。

优选地,所述步骤“所述注解校验模块根据所述所述校验规则生成模块生成的比较规则的逐个属性,去参数对象中寻找与之相对应的属性,然后通过自定义的比较规则对属性的值进行比较”的实现步骤包括:

所述注解校验模块获取所述客户端传过来的参数封装成参数对象,根据注解解析模块注解后的参数对象获取对应的规则对象,寻找与所述规则对象相对应的属性,然后通过自定义的比较规则对属性的值进行比较,如果校验成成功,则执行接口的业务逻辑,否则,不执行接口的业务逻辑。

优选地,所述接口参数校验方法还包括:所述注解校验模块将校验结果返回至所述客户端的参数对象。

优选地,所述校验规则生成模块还生成字段全局必要性检验的规则。

为解决上述技术问题,本发明还提供一种接口参数校验方法的接口参数校验组件;

采用了上述方法及组件之后,所述客户端请求服务端的一个接口,所述校验器包括注解解析模块、注解校验模块及校验规则生成模块,客户通过所述客户端对参数进行自定义,所述注解解析模块对参数进行解析并将解析结果数据发送给所述校验规则生成模块,所述校验规则生成模块根据所述解析结果数据生成自定义引用数据类型的比较规则,所述注解校验模块根据所述所述校验规则生成模块生成的比较规则的逐个属性,去参数对象中寻找与之相对应的属性,然后通过自定义的比较规则对属性的值进行比较,如果没有找到对应的属性或者与之对应的属性值不相同,则为校验失败,否则校验通过,该接口参数校验方法可基于注解、json、xml多种格式对框架进行多样化实现,更好地支持参数的强依赖性,能够支持复杂的参数类型,统一接口开发模式标准,规范代码一致性,增强系统的稳定性、易维护性、健壮性,增强代码得可读性、可维护性,接口参数的更加准确地进行校验处理。

附图说明

图1是本发明的一种接口参数校验方法的执行流程图;

图2是本发明的一种接口参数校验方法的整体模型示意图。

具体实施方式

为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅用于解释本发明,并不用于限定本发明。

实施例1

请参阅图1至图2,

图1是本发明的一种接口参数校验方法的执行流程图;

图2是本发明的一种接口参数校验方法的整体模型示意图。

本发明公开了一种接口参数校验方法,提供客户端10、校验器20及服务器30,所述校验器20包括注解解析模块21、注解校验模块22及校验规则生成模块23,所述接口参数校验方法包括以下步骤:所述客户端10请求服务端的一个接口,客户通过所述客户端10对参数进行自定义,所述注解解析模块21对参数进行解析并将解析结果数据发送给所述校验规则生成模块23,所述校验规则生成模块23根据所述解析结果数据生成自定义引用数据类型的比较规则,所述注解校验模块22根据所述所述校验规则生成模块23生成的比较规则的逐个属性,去参数对象中寻找与之相对应的属性,然后通过自定义的比较规则对属性的值进行比较,如果没有找到对应的属性或者与之对应的属性值不相同,则为校验失败,否则校验通过,所述注解校验模块22将校验结果返回至所述客户端10的参数对象。

在本实施例,优选的所述注解校验模块22支持xml配置、json配置、以及基于java的自定义注解配置,能更好地对接口的参数进行统一化的管理,让接口的业务逻辑更加灵活。

在本实施例,接口参数校验方法增加了基于xml配置与json配置实现的技术方案:xml、json是当前进行前后端交互、接口之间通讯甚至跨服务跨系统的主要通讯工具语言,xml、json格式相对于注解的实现方式而言,参数规则结构会更清晰,代码得可读性相对来说会更优秀,但是缺点的话,就是不够简洁,开发过程中使用相对繁琐。但是在底层实现的思路上和上图是同样的原理。只是解析的对象不一样而已,通过xmlpaser和jsonpaser将xml或者json对象把xmldocument和jsonobject的逐条属性值解析成对应javabean,然后在进行校验匹配,增强框架的可用性、多样化性。

在本实施例,所述步骤“所述校验规则生成模块23根据所述解析结果数据生成自定义引用数据类型的比较规则”的实现步骤包括:

所述校验规则生成模块23根据所述解析结果数据生成实现基础类型自定义规则;

所述校验规则生成模块23根据所述解析结果数据生成自定义校验规则;

其中,所述实现基础类型自定义规则包括must、int、strin、len、date、reg、long、float及double。

在本实施例,所述规则must的实现是:该规则指定字段是必要的,不能为null或空串;

所述规则int的实现是:该规则指定的字段非null或空串,则为int型数据,且在必须在规定大小内;

所述规则strin的实现是:该规则指定的字段如果非null或空串,则要求为指定字串数组中的一个;

所述规则len的实现是:该规则指定的字段非null或空串,要求为指定长度;

所述规则date的实现是:该规则指定的字段非null或空串,要求为指定日期格式;

所述规则reg的实现是:该规则指定的字段非null或空串,要求匹配指定正则表达式;

所述规则long的实现是:该规则指定的字段非null或空串,则为long型数据,且在必须在规定大小内;

所述规则float的实现是:该规则指定的字段非null或空串,则为float型数据,且在必须在规定大小内。

所述规则double的实现是:该规则指定的字段非null或空串,则为double型数据,且在必须在规定大小内。

在本实施例,所述步骤“所述校验规则生成模块23根据所述解析结果数据生成自定义校验规则”的实现步骤包括:

所述校验规则生成模块23定义validaterulehandler接口的规则对象与参数对象的逻辑;

根据规则对象与参数对象添加自定义规则,配置自定义规则的处理器的完整路径。

所述validaterulehandler接口的规则对象为ruleinfo对象,所述ruleinfo对象为需要校验业务接口的实现定义好的接口参数所生成的规则对象,所述参数对象为filedvalue-object对象,所述filedvalue-object对象为业务接口调用方所传的参数生成的参数对象。

所述步骤“所述注解校验模块22根据所述所述校验规则生成模块23生成的比较规则的逐个属性,去参数对象中寻找与之相对应的属性,然后通过自定义的比较规则对属性的值进行比较”的实现步骤包括:

所述注解校验模块22获取所述客户端10传过来的参数封装成参数对象,根据注解解析模块21注解后的参数对象获取对应的规则对象,寻找与所述规则对象相对应的属性,然后通过自定义的比较规则对属性的值进行比较,如果校验成成功,则执行接口的业务逻辑,否则,不执行接口的业务逻辑。

在本实施例,所述校验规则生成模块23还生成字段全局必要性检验的规则,通过must校验规则实现字段必要性的校验,但如果想对所有字段都要求必要性校验,因此还要新增字段全局必要性设置,must=true表示所有字段不能为空,规定age为大于1的int整数,单个感叹号“!”表示age可以为空(优先级高于must)。当然must没有配置时默认为false,及所有字段不要求必要性校验。如果某个字段要求必要性校验,可以在校验表达式后添加两个感叹号“!!”,例如:

@validate(value="age:int(1,m)!!|status:strin(0,1,2)|name:len(4)")表示除了age要求必要性校验,其他字段不作要求。

本发明还公开了一种实现上述接口参数校验方法的接口参数校验组件,包括客户端10、校验器2020及服务器30,所述校验器2020包括注解解析模块21、注解校验模块22及校验规则生成模块23,所述客户端10请求服务端的一个接口,客户通过所述客户端10对参数进行自定义,所述注解解析模块21对参数进行解析并将解析结果数据发送给所述校验规则生成模块23,所述校验规则生成模块23根据所述解析结果数据生成自定义引用数据类型的比较规则,所述注解校验模块22根据所述所述校验规则生成模块23生成的比较规则的逐个属性,去参数对象中寻找与之相对应的属性,然后通过自定义的比较规则对属性的值进行比较,如果没有找到对应的属性或者与之对应的属性值不相同,则为校验失败,否则校验通过。

采用了上述方法及组件之后,所述客户端10请求服务端的一个接口,所述校验器2020包括注解解析模块21、注解校验模块22及校验规则生成模块23,客户通过所述客户端10对参数进行自定义,所述注解解析模块21对参数进行解析并将解析结果数据发送给所述校验规则生成模块23,所述校验规则生成模块23根据所述解析结果数据生成自定义引用数据类型的比较规则,所述注解校验模块22根据所述所述校验规则生成模块23生成的比较规则的逐个属性,去参数对象中寻找与之相对应的属性,然后通过自定义的比较规则对属性的值进行比较,如果没有找到对应的属性或者与之对应的属性值不相同,则为校验失败,否则校验通过,该接口参数校验方法可基于注解、json、xml多种格式对框架进行多样化实现,更好地支持参数的强依赖性,能够支持复杂的参数类型,统一接口开发模式标准,规范代码一致性,增强系统的稳定性、易维护性、健壮性,增强代码得可读性、可维护性,接口参数的更加准确地进行校验处理。

同时,应当理解的是,以上仅为本发明的优选实施例,不能因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效实现方法,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1