CN110659019B - 参数校验方法、装置和服务器 - Google Patents
参数校验方法、装置和服务器 Download PDFInfo
- Publication number
- CN110659019B CN110659019B CN201910922659.5A CN201910922659A CN110659019B CN 110659019 B CN110659019 B CN 110659019B CN 201910922659 A CN201910922659 A CN 201910922659A CN 110659019 B CN110659019 B CN 110659019B
- Authority
- CN
- China
- Prior art keywords
- parameter
- parameters
- function
- checked
- verification
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/20—Software design
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Stored Programmes (AREA)
Abstract
本发明提供了一种参数校验方法、装置和服务器,其中,该方法包括:获取参数校验请求;该多个参数之间具有级别关系,该级别关系至少包括父子关系,具有父子关系的参数中父级参数包括子级参数;按照如下方法对多个参数从父级向子级依次进行校验,直至多个参数校验完毕:从预设的函数库中获取与当前待校验参数对应的校验函数;执行获取到的校验函数,得到校验结果。该方式中,所有的校验函数均保存在函数库中,对于需要交叉校验的参数,可以基于父级参数对应的校验函数进行校验,无需专门在请求函数中编写关于交叉校验的校验函数,该方式可以简化请求函数的逻辑,同时便于对校验函数进行维护和管理。
Description
技术领域
本发明涉及数据处理技术领域,尤其是涉及一种参数校验方法、装置和服务器。
背景技术
现有的网络请求的参数校验方法中,通常将单独的关键字对应的校验函数保存在函数库中,可以通过调用函数库中的校验函数校验单独的关键字,但对于多个关键字的值进行交叉校验时,上述函数库中难以建立关键字与交叉校验函数之间的映射关系,因而需要在请求函数中编写相应的校验函数,这就导致部分校验函数在函数库,部分校验函数在请求函数中,不仅使请求函数的代码编写逻辑复杂,也不利于对校验函数进行维护和管理。
发明内容
本发明的目的在于提供一种参数校验方法、装置和服务器,以简化请求函数的逻辑,同时便于对校验函数进行维护和管理。
第一方面,本发明实施例提供一种参数校验方法,该方法包括:获取参数校验请求;该参数校验请求中包括多个参数,多个参数之间具有级别关系,该级别关系至少包括父子关系,具有父子关系的参数中父级参数包括子级参数;按照如下方法对多个参数从父级向子级依次进行校验,直至多个参数校验完毕:从预设的函数库中获取与当前待校验参数对应的校验函数;其中,该校验函数用于校验当前待校验参数,或者还用于对当前待校验参数中包括的子级参数进行交叉校验;执行获取到的校验函数,得到校验结果。
在本发明较佳的实施例中,上述方法还包括:如果参数校验请求的多个参数中包含多个最高父级参数,且多个最高父级参数需要交叉校验,根据参数校验请求的URL地址,对多个最高父级参数进行交叉校验。
在本发明较佳的实施例中,上述从预设的函数库中获取与当前待校验参数对应的校验函数的步骤,包括:如果当前待校验参数的参数值为空,跳过当前参数,将当前待校验参数的下一个参数作为新的当前待校验参数,执行从预设的函数库中获取与当前待校验参数对应的校验函数的步骤。
在本发明较佳的实施例中,上述从预设的函数库中获取与当前待校验参数对应的校验函数的步骤,包括:采用反射机制,从预设的函数库中获取指定函数名的校验函数;该指定函数名包括预设前缀和当前待校验参数的关键字。
第二方面,本发明实施例提供一种参数校验装置,该装置包括:参数获取模块,用于获取参数校验请求;该参数校验请求中包括多个参数,多个参数之间具有级别关系,该级别关系至少包括父子关系,具有父子关系的参数中父级参数包括子级参数;校验模块,用于按照如下方法对多个参数从父级向子级依次进行校验,直至多个参数校验完毕:从预设的函数库中获取与当前待校验参数对应的校验函数;其中,该校验函数用于校验当前待校验参数,或者还用于对当前待校验参数中包括的子级参数进行交叉校验;执行获取到的校验函数,得到校验结果。
在本发明较佳的实施例中,上述校验模块,还用于:如果该参数校验请求的多个参数中包含多个最高父级参数,且多个最高父级参数需要交叉校验,根据参数校验请求的URL地址,对多个最高父级参数进行交叉校验。
在本发明较佳的实施例中,上述校验模块,用于:如果当前待校验参数的参数值为空,跳过当前待校验参数,将当前待校验参数的下一个参数作为新的当前待校验参数,执行从预设的函数库中获取与当前待校验参数对应的校验函数的步骤。
在本发明较佳的实施例中,上述校验模块,用于:采用反射机制,从预设的函数库中获取指定函数名的校验函数;该指定函数名包括预设前缀和当前待校验参数的关键字。
第三方面,本发明实施例提供一种服务器,包括处理器和存储器,该存储器存储有能够被处理器执行的机器可执行指令,该处理器执行机器可执行指令以实现前述实施方式任一项所述的参数校验方法。
第四方面,本发明实施例提供一种机器可读存储介质,该机器可读存储介质存储有机器可执行指令,该机器可执行指令在被处理器调用和执行时,该机器可执行指令促使处理器实现前述实施方式任一项所述的参数校验方法。
本发明实施例带来了以下有益效果:
本发明提供的一种参数校验方法、装置和服务器,首先获取参数校验请求,该多个参数之间具有级别关系,该级别关系至少包括父子关系,具有父子关系的参数中父级参数包括子级参数;然后按照如下方法对多个参数从父级向子级依次进行校验,直至多个参数校验完毕:从预设的函数库中获取与当前待校验参数对应的校验函数;进而执行获取到的校验函数,得到校验结果。该方式中,所有的校验函数均保存在函数库中,对于需要交叉校验的参数,可以基于父级参数对应的校验函数进行校验,无需专门在请求函数中编写关于交叉校验的校验函数,该方式可以简化请求函数的逻辑,同时便于对校验函数进行维护和管理。
进一步地,由于校验函数可以校验当前待校验参数中包括的子级参数,因此,如果参数校验请求中包含有易冲突或易混淆的参数,将这些参数关联至不同的父级参数中,以区分这些易冲突或易混淆,使得校验函数更加易于维护和管理。
附图说明
为了更清楚地说明本发明具体实施方式或现有技术中的技术方案,下面将对具体实施方式或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施方式,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例提供的一种参数校验的校验逻辑示意图;
图2为本发明实施例提供的另一种参数校验的校验逻辑示意图;
图3为本发明实施例提供的一种参数校验方法的流程图;
图4为本发明实施例提供的另一种参数校验方法的流程图;
图5为本发明实施例提供的父关键字与子关键字的结构示意图;
图6为本发明实施例提供的另一种参数校验方法的流程图;
图7为本发明实施例提供的一种参数校验逻辑的结构示意图;
图8为本发明实施例提供的一种参数校验装置的结构示意图;
图9为本发明实施例提供的一种服务器的结构示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本发明实施例的组件可以以各种不同的配置来布置和设计。
因此,以下对在附图中提供的本发明的实施例的详细描述并非旨在限制要求保护的本发明的范围,而是仅仅表示本发明的选定实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
相关技术中,网络请求中的参数校验通常是指判断用户输入的参数值是否符合预设要求,参数校验通常可以是非空字符校验、数字校验、电话校验、坐标校验和正则校验等。
为了便于理解,在此对网络请求进行详细解释。下述程序给出了两种场景下的网络请求,分别是数据库操作请求body1和数组操作请求body2:
对于上述body1需要校验的是:
1、user_info是否包含name和password,且name和password是否可以登录。
2、table_action中对table_name对应的数据库进行类型为type值为values的操作是否可行。
3、user_info的name对table_actions中的table_name有没有操作权限。
对于body2需要校验的是:
1、user_info是否包含name和password,且name和password是否可登录。
2、array_action对数据库进行类型为type值为values的操作是否可行。
以body1的网络请求为例,下面详细介绍与关键字有关的定义及其说明:
关键字:在“:”左边的字符串,通常能代表“:”右边内容的含义,如user_info、name、table_name。
一级关键字:出现在第一层的关键字,如user_info,table_action。
子关键字:是一个相对的概念,如在关键字a对应的值中包含关键字b,则b称为a的子关键字,如name是user_info的子关键字。
父关键字:和子关键字相反,如user_info是name的父关键字。
交叉校验:对多个关键字的值进行联合校验,如要校验登录,必须将name和password放在一起校验。
基于以上定义,相关技术中,针对每个网络请求,网络请求的处理端通常或采用与网络请求中的参数对应的校验函数对参数进行校验,通常有以下两种方案对上述参数进行校验:
方案一:无论是对于网络请求中每个参数单独的校验,还是对于参数之间的交叉校验,均在校验函数的函数主体中编写对于网络请求中包含的参数的校验代码,如图1所示为方案一的校验逻辑示意图。
方案一的校验逻辑容易造成代码冗余,开发效率低。例如,对于两个不同的网络请求request1和request2,其包括的参数大部分相同,只是存在个别的参数不同,此时,在已经对第一校验函数(用于校验网络请求request1的校验函数)的代码编写完毕的情况下,还需要再重新编写第二校验函数(用于校验网络请求request2的校验函数)的代码,造成了大量重复代码的编写,以使开发效率较低。为了解决校验代码大量重复的问题,相关技术中还提供了下述技术方案二。
方案二:建立函数库,将网络请求中的每个参数的单独的校验代码封装成一个校验函数,并将所有的校验函数存储到一个函数库中。但是对于参数的交叉校验,仍然需要将对其的校验代码写入到请求函数的函数主体中,如图2所示为方案二的校验逻辑示意图。
方案二在函数库建立完成后,请求函数在处理网络请求时,可以直接在请求函数中调用函数库中已经封装好的校验函数,因此,对于上述两个不同的网络请求request1和request2,编程人员在编写对应的请求函数时,不必在请求函数的主体中编写对于每个参数的校验代码。因此方案二相对于方案一能够在一定程度上节约代码,避免大量重复代码的编写,但是,由于方案二需要在函数主体中编写对参数交叉校验的校验代码,导致部分校验函数在函数库,部分校验函数在请求函数中,不仅函数本体的代码编写逻辑复杂,也不利于对校验函数进行维护和管理。
基于上述问题,本发明实施例提供一种参数校验方法、装置和服务器,该技术可以应用于登录请求、注册请求、网页请求等网络请求的参数验证场景中,尤其是网络请求中参数较为复杂的验证场景中。为便于对本实施例进行理解,首先对本发明实施例所公开的一种参数校验方法进行详细介绍,如图3所示,该方法包括如下步骤:
步骤S302,获取参数校验请求;该参数校验请求中包括多个参数,多个参数之间具有级别关系,该级别关系至少包括父子关系,具有父子关系的参数中父级参数包括子级参数。
该参数校验请求也可称为网络请求,该参数校验请求通常是用户通过客户端发送的,该客户端可以理解为安装在用户的移动终端(如手机、平板电脑等)或计算机上的应用程序,也可以为通过移动终端或计算机上的浏览器进行访问的网站。当服务端接收到参数验证请求后,可以对参数校验请求中的参数进行验证,以验证用户身份或者提交数据的合法性。
上述参数校验请求中通常包括多个参数,参数之间的级别可能相同也可能不同。例如,参数校验请求中可包含多个父级参数,每个父级参数下可包含一个或者多个子级参数,当该子级参数包含下一级参数时,该子级参数可以看成下一级参数的父级参数。通常可以将多个参数看成放置于二叉树中的参数,其中,父级参数可以看成二叉树中的一级节点对应的参数,子级参数可以看成一级节点的下一级节点对应的参数,以此类推。
步骤S304,按照下述方法对多个参数从父级向子级依次进行校验,直至所述多个参数校验完毕:从预设的函数库中获取与当前待校验参数对应的校验函数;其中,该校验函数用于校验当前待校验参数,或者还用于对该当前待校验参数中包括的子级参数进行交叉校验;执行获取到的上述校验函数,得到校验结果。
上述预设的函数库中通常存储有参数对应的校验函数,参数的校验逻辑,以及参数之间的级别关系。其中,每个参数单独的校验代码封装成一个校验函数,并将所有的校验函数存储到一个函数库中,且每个参数与其校验函数一一对应;当多个参数之间具有校验交叉关系(也可称为耦合关系)时,需要进行交叉校验,此时,需要将交叉检验的校验代码写入其父级参数对应的校验函数中,以使多个参数的交叉校验在父级参数对应的校验函数中进行;对于易冲突或易混淆的参数(例如,参数name可能指代人名,也可能指代动物名),通常也需要将其校验代码写入其父级参数对应的校验函数中,以使易冲突或易混淆的参数在其父级参数对应的校验函数中进行校验。将上述单独的参数、具有交叉关系的参数、易冲突或易混淆的参数的校验逻辑存入函数库中。
基于上述描述,校验函数通常可以校验当前待校验参数,也可以校验与当前待校验参数中包括的子级参数,也即是当当前待校验参数的子级参数具有交叉关系、易冲突或者易混淆时,可以通过当前待校验参数的校验函数校验子级参数。其中,哪些参数具有交叉关系、哪些参数易冲突或者易混淆,以及哪些参数的子级参数具有交叉关系、易冲突或者易混淆,已经预先存储在函数库中。
当参数校验请求中所有参数均遍历完成后,也即是所有的参数均得到相应的校验结果后,完成参数校验请求的校验。
本发明提供的一种参数校验方法,首先获取参数校验请求,该多个参数之间具有级别关系,该级别关系至少包括父子关系,具有父子关系的参数中父级参数包括子级参数;然后按照如下方法对多个参数从父级向子级依次进行校验,直至多个参数校验完毕:从预设的函数库中获取与当前待校验参数对应的校验函数;进而执行获取到的校验函数,得到校验结果。该方式中,所有的校验函数均保存在函数库中,对于需要交叉校验的参数,可以基于父级参数对应的校验函数进行校验,无需专门在请求函数中编写关于交叉校验的校验函数,该方式可以简化请求函数的逻辑,同时便于对校验函数进行维护和管理。
进一步地,由于校验函数可以校验当前待校验参数中包括的子级参数,因此,如果参数校验请求中包含有易冲突或易混淆的参数,将这些参数关联至不同的父级参数中,以区分这些易冲突或易混淆,使得校验函数更加易于维护和管理。
本发明实施例还提供另一种参数校验方法,该方法在上述实施例所述方法的基础上实现;该方法重点描述交叉校验的具体过程;如图4所示;该方法包括如下步骤:
步骤S402,获取参数校验请求;该参数校验请求中包括多个参数,多个参数之间具有级别关系,该级别关系至少包括父子关系,具有父子关系的参数中父级参数包括子级参数。
上述参数通常包括关键字和值,通常具有父子关系的参数中父级参数的值中包括子级参数,其中,父级参数中关键字通常称为父关键字,子级参数中的关键字通常称为子关键字。
步骤S404,判断是否从预设的函数库中获取到与当前待校验参数对应的校验函数;如果是,执行步骤S406;如果不是,执行步骤S416。
在具体实现时,可能从函数库中无法找到某一参数对应的校验函数,此时,通常会跳过该参数,继续校验下一个待校验参数。
步骤S406,判断上述当前待校验参数的关键字是否为父关键字,且包含需要交叉校验的多个参数的子关键字;如果是,执行步骤S408;如果不是,执行步骤S410。
上述多个参数中,需要交叉校验的多个参数的关键字包含于同一个父关键字;如图5所示为父关键字与子关键字的示意图;图5中以二叉树的形式,给出了参数校验请求中包括两个最高父级参数的情况,其中,关键字1和关键字11为最高父级参数对应的关键字,如果关键字2和关键字3需要交叉校验,那么关键字1为父关键字,关键字2和关键字3为子关键字。
步骤S408,执行当前待校验参数对应的校验函数,以对当前待校验参数的关键字包含的需要交叉校验的多个参数进行交叉校验,得到校验结果;执行步骤S416。
当获取当前待校验参数的关键字1的校验函数时,通常会从函数库中获取关键字1对应的校验函数,该校验函数中包括与关键字2和关键字3对应的校验代码,从而可以通过关键字1的校验函数,校验需要交叉校验的关键字2和关键字3,其中,该校验函数的命名通常与关键字1有映射关系,以方便校验函数的查找。
在具体实现时,如果参数校验请求的多个参数中包含多个最高父级参数,且多个最高父级参数需要交叉校验,根据参数校验请求的URL(Uniform Resource Locator,统一资源定位符)地址,对多个最高父级参数进行交叉校验。其中,通常预先将在URL地址的校验函数中存储需要交叉校验的多个最高父级参数的校验代码,并将URL地址的校验函数存入函数库中。
例如,假设图5中的关键字1和关键字11为需要交叉校验的多个最高父级参数对应的关键字,在对其进行交叉校验时,需要从函数库中查找URL地址的校验函数,以通过该校验函数中相应的校验代码校验关键字1和关键字11。
步骤S410,判断上述当前待校验参数的关键字是否为父关键字,且包含易冲突或者易混淆的子关键字;如果是,执行步骤S412;如果不是,执行步骤S414。
上述易冲突或者易混淆的子关键字,通常包含于父关键字下;如图5中,假设关键字22为易冲突或者易混淆的子关键字,那么其父关键字为关键字11;当获取当前级别的参数的关键字11的校验函数时,通常会从函数库中获取关键字11对应的校验函数中与关键字22对应的校验代码,以通过关键字11的校验函数中的该校验代码校验关键字22,得到校验结果。
步骤S412,执行当前待校验参数对应的校验函数,以对当前待校验参数的子关键字进行校验,得到校验结果;执行步骤S416。
步骤S414,执行当前待校验参数对应的校验函数,以校验当前待校验参数,得到校验结果。
步骤S416,判断当前待校验参数是否为最后一个参数;如果不是,执行步骤S418;如果是,执行步骤S420。
步骤S418,将上述当前待校验参数的下一参数作为新的当前级别,继续执行步骤S404。
步骤S420,校验完毕。
上述参数校验方法,首先获取参数校验请求;再从预设的函数库中获取到当前待校验参数对应的校验函数;如果当前待校验参数的关键字为父关键字,且包含需要交叉校验的多个参数的子关键字,则通过当前待校验参数对应的校验函数对当前待校验参数的值包含的需要交叉校验的多个参数进行交叉校验。该方式通过父关键字的校验函数对需要交叉校验的多个参数的子关键字进行校验,并将校验逻辑单独封装在一个函数库中,从而是的校验代码编写更加清楚,提升了开发效率。
本发明实施例还提供另一种参数校验方法,该方法在上述实施例所述方法的基础上实现;该方法重点描述从预设的函数库中获取与当前待校验参数对应的校验函数的具体过程;如图6所示;该方法包括如下步骤:
步骤S602,获取参数校验请求;该参数校验请求中包括多个参数。
步骤S604,如果当前待校验参数的参数值为空,跳过该当前待校验参数,将上述当前待校验参数的下一个参数作为新的当前待校验参数,从预设的函数库中获取与当前待校验参数对应的校验函数。
在具体实现时,通常从左到右,或者从右到左的方式依次遍历每个参数,以从函数库中获取每个参数的校验函数。在从预设的函数库中获取当前待校验参数对应的校验函数时,如果当前待校验参数的参数值为空,跳过该当前待校验参数,继续从预设的函数库中获取当前下一个参数。上述当前参数的参数值为空也可以理解为当前参数中不存在对应的关键字。
在遍历参数校验请求中的每个参数时,如果遍历到当前待校验参数的参数值为空,将跳过当前待校验参数(也可以理解为自动忽略该参数),不进行校验;如果参数值不为空(也可以理解为当前参数中存在对应的关键字)则进行校验。相关技术中,通常需要通过增加判断参数中是否有参数值的判断语句来确定是否校验,导致参数校验的灵活性差,本文中通过遍历的方式,无需增加判断语句,可以提高参数校验的灵活度。
在具体实现时,可以采用反射机制,从预设的函数库中获取指定函数名的校验函数;该指定函数名包括预设前缀和当前待校验参数的关键字。该反射机制通常为Java反射机制,可以在运行状态中,对于任意一个实体类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意方法和属性。
通过反射机制可以从函数库中调用与关键字相关的校验函数,通常函数库中的校验函数的命名与其对应的关键字相关,通常情况下由预设前缀加关键字的方式命名校验函数,以使校验函数与关键字一一映射,以便反射机制通过函数名得到校验函数的实体,同时,对于不同的参数校验请求中相同的参数的关键字,只需写一个校验函数即可,从而避免了代码重复,提高了开发效率。
参见图7所示的一种参数校验逻辑的结构示意图,图7中包括两个网络请求(相当于上述参数校验请求)request1和request2,其对应的待校验参数分别为body1和body2,当获取到网络请求时,可以根据实例化校验主体从函数库中调用相应的校验函数,以校验所述网络请求。其中,实例化校验主体可以采用广度优先算法,遍历网络请求中的每个参数,以确保可以获取到参数中的所有关键字(也可称为关键词);对于获取到的每个关键字,通过反射机制在函数库中查找相应的校验函数,通常,如果在函数库中查找到关键字对应校验函数,则执行该校验函数,如果未查找到关键字对应的校验函数,则跳转该关键字,继续查找下一个关键字对应的校验函数。
在具体实现时,可以将网络请求中的参数看成是一个二叉树,通过上述广度优先算法从二叉树的第一层(根节点)开始,从上至下逐层遍历,在同一层中,则按照从左到右的顺序对节点逐个访问。在逐层遍历过程中,按从顶层到底层的次序访问树中关键字,在同一层中,从左到右进行访问树中的关键字。
上述函数库中,针对单个关键字通常采用关键字命名校验函数,以使校验函数与单个关键字一一对应;针对需要交叉校验的两个或者多个关键字,将校验逻辑写入其共同的父关键字对应的校验函数中,以使需要交叉校验的关键字通过共同的父关键字进行校验;针对有歧义(相当于上述易混淆)或者易冲突的关键字,将其校验写入其对应的父关键字对应的校验函数中,以使有歧义或者易冲突的关键字通过其父关键字进行校验。该函数库中将单个、交叉校验、有歧义和易冲突的关键字都与其校验函数进行绑定,从而实现了校验主体到函数库的一一映射关系,以方便校验函数的查找,同时所有关键字的校验逻辑均体现在函数库中,可以对校验代码和校验逻辑进行统一的管理和错误排查。
步骤S606,执行获取当前待校验参数对应的校验函数,得到校验结果。
步骤S608,判断当前待校验参数是否为参数校验请求中的最后一个参数;如果不是,执行步骤S610;如果是,执行步骤S610。
步骤S610,将当前待校验参数的下一参数为新的当前待校验参数,继续执行步骤S604。步骤S612,校验完毕。
上述参数校验方法,首先获取参数校验请求;如果当前待校验参数的参数值为空,跳过该当前待校验参数,将上述当前待校验参数的下一个参数作为新的当前待校验参数,从预设的函数库中获取与当前待校验参数对应的校验函数,并执行获取到的校验函数得到校验结果。该方式可以自动识别当前校验参数的参数值是否为空,从而避免了代码重复,提高了开发效率;同时该方式将校验逻辑与业务代码解耦,方便对存在问题的校验函数或者校验代码进行查找。
对应于上述方法实施例,本发明实施例提供了一种参数校验装置,如图8所示,该装置包括:
参数获取模块80,用于获取参数校验请求;该参数校验请求中包括多个参数,多个参数之间具有级别关系,该级别关系至少包括父子关系,具有父子关系的参数中父级参数包括子级参数。
校验模块81,用于按照如下方法对多个参数从父级向子级依次进行校验,直至多个参数校验完毕:从预设的函数库中获取与当前待校验参数对应的校验函数;其中,该校验函数用于校验当前待校验参数,或者还用于对当前待校验参数中包括的子级参数进行交叉校验;执行获取到的校验函数,得到校验结果。
上述参数校验装置,首先获取参数校验请求,该多个参数之间具有级别关系,该级别关系至少包括父子关系,具有父子关系的参数中父级参数包括子级参数;然后按照如下方法对多个参数从父级向子级依次进行校验,直至多个参数校验完毕:从预设的函数库中获取与当前待校验参数对应的校验函数;进而执行获取到的校验函数,得到校验结果。该方式中,所有的校验函数均保存在函数库中,对于需要交叉校验的参数,可以基于父级参数对应的校验函数进行校验,无需专门在请求函数中编写关于交叉校验的校验函数,该方式可以简化请求函数的逻辑,同时便于对校验函数进行维护和管理。
进一步地,上述校验模块,还用于:如果上述参数校验请求的多个参数中包含多个最高父级参数,且多个最高父级参数需要交叉校验,根据参数校验请求的URL地址,对多个最高父级参数进行交叉校验。
进一步地,上述校验模块81,用于:如果当前待校验参数的参数值为空,跳过当前待校验参数,将当前待校验参数的下一个参数作为新的当前待校验参数,执行从预设的函数库中获取与当前待校验参数对应的校验函数的步骤。
进一步地,上述校验模块81,用于:采用反射机制,从预设的函数库中获取指定函数名的校验函数;该指定函数名包括预设前缀和当前待校验参数的关键字。
本发明实施例所提供的参数校验装置,其实现原理及产生的技术效果和前述方法实施例相同,为简要描述,装置实施例部分未提及之处,可参考前述方法实施例中相应内容。
本发明实施例还提供了一种服务器,用于运行上述参数校验方法;参见图9所示,该服务器包括存储器100和处理器101,其中,存储器100存储有能够被处理器101执行的机器可执行指令,该处理器101执行机器可执行指令以实现上述参数校验方法。
进一步地,图9所示的服务器还包括总线102和通信接口103,处理器101、通信接口103和存储器100通过总线102连接。
其中,存储器100可能包含高速随机存取存储器(RAM,Random Access Memory),也可能还包括非不稳定的存储器(non-volatile memory),例如至少一个磁盘存储器。通过至少一个通信接口103(可以是有线或者无线)实现该系统网元与至少一个其他网元之间的通信连接,可以使用互联网,广域网,本地网,城域网等。总线102可以是ISA总线、PCI总线或EISA总线等。所述总线可以分为地址总线、数据总线、控制总线等。为便于表示,图9中仅用一个双向箭头表示,但并不表示仅有一根总线或一种类型的总线。
处理器101可能是一种集成电路芯片,具有信号的处理能力。在实现过程中,上述方法的各步骤可以通过处理器101中的硬件的集成逻辑电路或者软件形式的指令完成。上述的处理器101可以是通用处理器,包括中央处理器(Central Processing Unit,简称CPU)、网络处理器(Network Processor,简称NP)等;还可以是数字信号处理器(DigitalSignal Processing,简称DSP)、专用集成电路(Application Specific IntegratedCircuit,简称ASIC)、现成可编程门阵列(Field-Programmable Gate Array,简称FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。可以实现或者执行本发明实施例中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。结合本发明实施例所公开的方法的步骤可以直接体现为硬件译码处理器执行完成,或者用译码处理器中的硬件及软件模块组合执行完成。软件模块可以位于随机存储器,闪存、只读存储器,可编程只读存储器或者电可擦写可编程存储器、寄存器等本领域成熟的存储介质中。该存储介质位于存储器100,处理器101读取存储器100中的信息,结合其硬件完成前述实施例的方法的步骤。
本发明实施例还提供了一种机器可读存储介质,该机器可读存储介质存储有机器可执行指令,该机器可执行指令在被处理器调用和执行时,该机器可执行指令促使处理器实现上述参数校验方法,具体实现可参见方法实施例,在此不再赘述。
本发明实施例所提供的参数校验方法、装置和服务器的计算机程序产品,包括存储了程序代码的计算机可读存储介质,所述程序代码包括的指令可用于执行前面方法实施例中所述的方法,具体实现可参见方法实施例,在此不再赘述。
所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
最后应说明的是:以上所述实施例,仅为本发明的具体实施方式,用以说明本发明的技术方案,而非对其限制,本发明的保护范围并不局限于此,尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,其依然可以对前述实施例所记载的技术方案进行修改或可轻易想到变化,或者对其中部分技术特征进行等同替换;而这些修改、变化或者替换,并不使相应技术方案的本质脱离本发明实施例技术方案的精神和范围,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应所述以权利要求的保护范围为准。
Claims (8)
1.一种参数校验方法,其特征在于,所述方法包括:
获取参数校验请求;所述参数校验请求中包括多个参数,所述多个参数之间具有级别关系,所述级别关系至少包括父子关系,具有父子关系的参数中父级参数包括子级参数;
按照如下方法对所述多个参数从父级向子级依次进行校验,直至所述多个参数校验完毕:
从预设的函数库中获取与当前待校验参数对应的校验函数;其中,所述校验函数用于校验所述当前待校验参数,或者还用于对所述当前待校验参数中包括的子级参数进行交叉校验;所述函数库中存储有参数对应的校验函数,参数的校验逻辑,以及参数之间的级别关系;其中,易冲突或易混淆的参数对应的校验代码写入其父级参数对应的校验函数中;
执行获取到的所述校验函数,得到校验结果;
所述方法还包括:
如果所述参数校验请求的多个参数中包含多个最高父级参数,且多个所述最高父级参数需要交叉校验,根据所述参数校验请求的URL地址,对多个所述最高父级参数进行交叉校验;所述URL地址的校验函数中存储需要交叉校验的多个最高父级参数的校验代码。
2.根据权利要求1所述的方法,其特征在于,从预设的函数库中获取与当前待校验参数对应的校验函数的步骤,包括:
如果当前待校验参数的参数值为空,跳过所述当前待校验参数,将所述当前待校验参数的下一个参数作为新的当前待校验参数,执行从预设的函数库中获取与当前待校验参数对应的校验函数的步骤。
3.根据权利要求1所述的方法,其特征在于,从预设的函数库中获取与当前待校验参数对应的校验函数的步骤,包括:
采用反射机制,从预设的函数库中获取指定函数名的校验函数;所述指定函数名包括预设前缀和所述当前待校验参数的关键字。
4.一种参数校验装置,其特征在于,所述装置包括:
参数获取模块,用于获取参数校验请求;所述参数校验请求中包括多个参数,所述多个参数之间具有级别关系,所述级别关系至少包括父子关系,具有父子关系的参数中父级参数包括子级参数;
校验模块,用于按照如下方法对所述多个参数从父级向子级依次进行校验,直至所述多个参数校验完毕:从预设的函数库中获取与当前待校验参数对应的校验函数;其中,所述校验函数用于校验所述当前待校验参数,或者还用于对当待校验参数中包括的子级参数进行交叉校验;执行获取到的所述校验函数,得到校验结果;所述函数库中存储有参数对应的校验函数,参数的校验逻辑,以及参数之间的级别关系;其中,易冲突或易混淆的参数对应的校验代码写入其父级参数对应的校验函数中;
所述校验模块,还用于:
如果所述参数校验请求的多个参数中包含多个最高父级参数,且多个所述最高父级参数需要交叉校验,根据所述参数校验请求的URL地址,对多个所述最高父级参数进行交叉校验;所述URL地址的校验函数中存储需要交叉校验的多个最高父级参数的校验代码。
5.根据权利要求4所述的装置,其特征在于,所述校验模块,还用于:
如果当前待校验参数的参数值为空,跳过所述当前待校验参数,将所述当前待校验参数的下一个参数作为新的当前待校验参数,执行从预设的函数库中获取与当前待校验参数对应的校验函数的步骤。
6.根据权利要求4所述的装置,其特征在于,所述校验模块,还用于:
采用反射机制,从预设的函数库中获取指定函数名的校验函数;所述指定函数名包括预设前缀和所述当前待校验参数的关键字。
7.一种服务器,其特征在于,包括处理器和存储器,所述存储器存储有能够被所述处理器执行的机器可执行指令,所述处理器执行所述机器可执行指令以实现权利要求1至3任一项所述的参数校验方法。
8.一种机器可读存储介质,其特征在于,所述机器可读存储介质存储有机器可执行指令,所述机器可执行指令在被处理器调用和执行时,所述机器可执行指令促使处理器实现权利要求1至3任一项所述的参数校验方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910922659.5A CN110659019B (zh) | 2019-09-26 | 2019-09-26 | 参数校验方法、装置和服务器 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910922659.5A CN110659019B (zh) | 2019-09-26 | 2019-09-26 | 参数校验方法、装置和服务器 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110659019A CN110659019A (zh) | 2020-01-07 |
CN110659019B true CN110659019B (zh) | 2023-07-25 |
Family
ID=69039421
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910922659.5A Active CN110659019B (zh) | 2019-09-26 | 2019-09-26 | 参数校验方法、装置和服务器 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110659019B (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111290742A (zh) * | 2020-03-04 | 2020-06-16 | 五八有限公司 | 参数验证方法、装置、电子设备及可读存储介质 |
CN111581614B (zh) * | 2020-05-07 | 2023-03-14 | 安徽龙讯信息科技有限公司 | 一种基于集约化网站大数据分析平台 |
CN112788017B (zh) * | 2020-12-30 | 2023-10-13 | 中国农业银行股份有限公司 | 一种安全校验方法、装置、设备及介质 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105678155A (zh) * | 2014-11-18 | 2016-06-15 | 阿里巴巴集团控股有限公司 | 一种信息存储和校验的方法及装置 |
WO2018006789A1 (zh) * | 2016-07-04 | 2018-01-11 | 中兴通讯股份有限公司 | 一种参数校验方法和装置、以及网管服务器和计算机存储介质 |
CN108132880A (zh) * | 2017-12-21 | 2018-06-08 | 武汉斑马快跑科技有限公司 | 一种参数校验方法及装置 |
CN109101812A (zh) * | 2018-08-28 | 2018-12-28 | 北京神州绿盟信息安全科技股份有限公司 | 一种参数校验方法、装置、计算装置和存储介质 |
CN109597816A (zh) * | 2018-10-30 | 2019-04-09 | 京信通信系统(中国)有限公司 | 参数校验方法、装置、计算机存储介质及嵌入式设备 |
-
2019
- 2019-09-26 CN CN201910922659.5A patent/CN110659019B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105678155A (zh) * | 2014-11-18 | 2016-06-15 | 阿里巴巴集团控股有限公司 | 一种信息存储和校验的方法及装置 |
WO2018006789A1 (zh) * | 2016-07-04 | 2018-01-11 | 中兴通讯股份有限公司 | 一种参数校验方法和装置、以及网管服务器和计算机存储介质 |
CN107579836A (zh) * | 2016-07-04 | 2018-01-12 | 中兴通讯股份有限公司 | 一种参数校验方法和装置、以及网管服务器 |
CN108132880A (zh) * | 2017-12-21 | 2018-06-08 | 武汉斑马快跑科技有限公司 | 一种参数校验方法及装置 |
CN109101812A (zh) * | 2018-08-28 | 2018-12-28 | 北京神州绿盟信息安全科技股份有限公司 | 一种参数校验方法、装置、计算装置和存储介质 |
CN109597816A (zh) * | 2018-10-30 | 2019-04-09 | 京信通信系统(中国)有限公司 | 参数校验方法、装置、计算机存储介质及嵌入式设备 |
Also Published As
Publication number | Publication date |
---|---|
CN110659019A (zh) | 2020-01-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110659019B (zh) | 参数校验方法、装置和服务器 | |
CN107426169B (zh) | 一种基于权限的业务处理方法及装置 | |
CN109347787B (zh) | 一种身份信息的识别方法及装置 | |
JP6599906B2 (ja) | ログインアカウントのプロンプト | |
WO2020207034A1 (zh) | 一种接口测试用例的生成方法、装置、存储介质和服务器 | |
CN109145235B (zh) | 用于解析网页的方法、装置及电子设备 | |
JP2017526253A (ja) | 端末識別子を促進する方法及びシステム | |
CN110995521B (zh) | 服务提供方法、装置、设备及系统 | |
RU2734027C2 (ru) | Способ и устройство для предотвращения атаки на сервер | |
CN111461886B (zh) | 区块链上不依赖智能合约的系统配置的管理方法和装置 | |
CN116561389A (zh) | 一种文本匹配方法、装置、设备及存储介质 | |
CN111694992B (zh) | 一种数据处理方法和装置 | |
CN114745133A (zh) | 一种识别设备唯一性的方法及装置 | |
CN108776665B (zh) | 一种数据处理方法及装置 | |
CN107181747B (zh) | 一种包含顶层节点的Handle解析系统 | |
CN111382179B (zh) | 数据处理方法、装置及电子设备 | |
CN114003432A (zh) | 参数校验方法、装置、计算机设备和存储介质 | |
CN117271571A (zh) | 数据库唯一性约束处理方法、装置、设备及存储介质 | |
CN113408254A (zh) | 一种页面表单信息填写方法、装置、设备和可读介质 | |
CN106502707B (zh) | 代码生成方法及装置 | |
US10216771B2 (en) | Creating and handling identification for a resource in a configuration database | |
CN110807185A (zh) | 系统访问方法、装置及服务器 | |
CN115391188A (zh) | 一种场景测试用例生成方法、装置、设备及存储介质 | |
CN105550022A (zh) | 一种业务数据的处理方法和装置 | |
CN105978865B (zh) | 应用包名验证方法及装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |