CN109324958B - 一种rest统一校验方法、装置、设备及可读存储介质 - Google Patents
一种rest统一校验方法、装置、设备及可读存储介质 Download PDFInfo
- Publication number
- CN109324958B CN109324958B CN201810677117.1A CN201810677117A CN109324958B CN 109324958 B CN109324958 B CN 109324958B CN 201810677117 A CN201810677117 A CN 201810677117A CN 109324958 B CN109324958 B CN 109324958B
- Authority
- CN
- China
- Prior art keywords
- rest
- format
- verification
- parameters
- request
- 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
- 238000012795 verification Methods 0.000 title claims abstract description 155
- 238000000034 method Methods 0.000 title claims abstract description 95
- 238000011161 development Methods 0.000 claims abstract description 29
- 230000007717 exclusion Effects 0.000 claims description 22
- 238000004590 computer program Methods 0.000 claims description 9
- 230000006870 function Effects 0.000 abstract description 4
- 230000000694 effects Effects 0.000 abstract description 3
- 230000018109 developmental process Effects 0.000 description 26
- 230000001419 dependent effect Effects 0.000 description 20
- 238000010586 diagram Methods 0.000 description 8
- 230000002159 abnormal effect Effects 0.000 description 3
- 238000012545 processing Methods 0.000 description 3
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 230000006978 adaptation Effects 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 210000001072 colon Anatomy 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 230000008140 language development Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000005192 partition Methods 0.000 description 1
- 230000000750 progressive effect Effects 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
- 238000013519 translation Methods 0.000 description 1
- 239000002699 waste material Substances 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3604—Software analysis for verifying properties of programs
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Computer Hardware Design (AREA)
- Quality & Reliability (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Stored Programmes (AREA)
Abstract
本发明公开了一种REST统一校验方法,该方法包括以下步骤:接收REST请求;判断预设格式树中是否存在与REST请求对应的目标格式对象;其中,在预设格式树中,与各个REST接口对应的节点分别对应一个格式对象,格式对象包括各个校验项目分别对应的校验参数;如果是,则获取目标格式对象;利用目标格式对象的各个校验项目分别对应的校验参数对REST请求进行校验。可在接收到REST请求时,顺利完成对各种REST请求的参数进行校验,即实现了RSET统一校验,简化开发过程,减少函数或方法的调用,能够有效的提升REST校验结果的准确率。本发明还公开了一种REST统一校验装置、设备及可读存储介质,具有相应的技术效果。
Description
技术领域
本发明涉及软件技术领域,特别是涉及一种REST统一校验方法、装置、设备及可读存储介质。
背景技术
REST(Representational State Transfer,表述性状态转移)诞生于互联网高度发展时期,其以无状态、易扩展、更适应当今互联网多系统、多架构等特点得到广泛的应用。特别的,在云服务、存储系统等领域应用较多。
REST服务端接收到REST请求后,需要校验REST请求正确性,然后执行请求。然而,由于REST接口多种多样,也导致REST参数多种多样,很难找到一种统一的校验方式。目前REST参数校验一般是根据不同REST接口提供不同的参数校验。但是,有时会因取值不同而开发不同的校验方法,非常费时费力,开发工作量大且繁琐。而且当不同的校验方法由多人开发时,很容易造成代码重复,特别是在接口很多时,对参数的校验更为繁琐,更无法保证校验结果的准确性。
综上所述,如何有效地解决简化REST开发流程等问题,是目前本领域技术人员急需解决的技术问题。
发明内容
本发明的目的是提供一种REST统一校验方法、装置、设备及可读存储介质,以简化开发流程,提高开发效率。
为解决上述技术问题,本发明提供如下技术方案:
一种REST统一校验方法,包括:
接收REST请求;
判断预设格式树中是否存在与所述REST请求对应的目标格式对象;其中,在所述预设格式树中,与各个REST接口对应的节点分别对应一个格式对象,所述格式对象包括各个校验项目分别对应的校验参数;
如果是,则获取所述目标格式对象;
利用所述目标格式对象的各个校验项目分别对应的校验参数对所述REST 请求进行校验。
优选地,还包括:
为每个REST接口分别创建格式文件;其中,所述格式文件的文件路径与 REST接口的URI一致,所述格式文件包括对应的REST接口的必选参数、参数间互斥关系、参数间依赖关系、参数值范围;
将各个所述格式文件加载至内存中,并利用各个所述格式文件分别对应的文件路径创建格式树;
将各个所述格式文件解析为当前开发语言对应的格式对象,并存入所述格式树中。
优选地,所述判断预设格式树中是否存在与所述REST请求对应的目标格式对象,包括:
利用所述REST请求的目标URI,查找并判断所述格式树是否存在与所述 REST请求对应的目标节点;
如果否,则直接确定不存在与所述REST请求对应的目标格式对象;
如果是,则判断所述目标节点是否存在对应的所述目标格式对象。
优选地,利用所述目标格式对象的各个校验项目分别对应的校验参数对所述REST请求进行校验,包括:
利用所述目标格式对象的各个校验项目分别对应的校验参数对所述REST 请求中的参数进行校验;其中,所述校验项目包括参数值校验、依赖性校验、互斥性校验和必选参数校验;
在对各个所述校验项目校验过程中,在出现任一项所述校验项目失败时,停止校验并输出校验失败结果;
当各个所述校验项目均通过时,输出校验成功结果。
优选地,必选参数校验,包括:
判断所述REST请求中是否具有所述必选参数;
如果是,则直接确定通过所述必选参数校验;
如果否,则进一步判断是否存在与所述必选参数具有互斥关系的目标参数;
如果存在所述目标参数,则确定通过所述必选参数校验。
优选地,所述接收REST请求,包括:
接收具有TOKEN的REST请求。
优选地,在利用所述目标格式对象的各个校验项目分别对应的校验参数对所述REST请求进行校验之前,还包括:
对所述REST请求中的TOKEN进行校验;
如果校验失败,则停止校验并输出校验失败结果。
一种REST统一校验装置,包括:
REST请求接收模块,用于接收REST请求;
目标格式对象判断模块,用于判断预设格式树中是否存在与所述REST请求对应的目标格式对象;其中,在所述预设格式树中,与各个REST接口对应的节点分别对应一个格式对象,所述格式对象包括各个校验项目分别对应的校验参数;
目标格式对象获取模块,用于当存在所述目标格式对象,获取所述目标格式对象;
REST请求校验模块,用于利用所述目标格式对象的各个校验项目分别对应的校验参数对所述REST请求进行校验。
一种REST统一校验设备,包括:
存储器,用于存储计算机程序;
处理器,用于执行所述计算机程序时实现上述REST统一校验方法的步骤。
一种可读存储介质,所述可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现上述REST统一校验方法的步骤。
应用本发明实施例所提供的方法,当接收到REST请求时,可在预设格式树中确定并获取出与REST请求对应的目标格式对象。其中,在所述预设格式树中,与各个REST接口对应的节点分别对应一个格式对象,所述格式对象包括各个校验项目分别对应的校验参数;当在预设格式树中未找到目标格式对象时,可以认为当前接收到的REST请求为非正常请求,可直接返回校验失败或请求错误的提示信息,以此来减少校验次数,提高校验效率。然后利用该目标格式对象即可完成对REST请求中的参数进行校验。也就是说,只要在开发过程中,创建好了各种REST请求对应的格式对象。该格式对象中规定了对应的 REST请求所需校验的校验项目,以及各个校验项目对象的校验参数。即,可在接收到REST请求时,顺利完成对各种REST请求的参数进行校验,即实现了RSET统一校验。因无需为每一个REST请求(REST接口)分别设置不同的校验方法,简化了开发过程。另外,由于无需为每个REST接口的单独创建校验方法,在实际的校验处理逻辑中的,也可简化代码,减少函数或方法之间的调用,能够有效的提高代码准确率,进一步提升REST校验结果的准确率。
相应地,本发明实施例还提供了与上述REST统一校验方法相对应的 REST统一校验装置、设备和可读存储介质,具有上述技术效果,在此不再赘述。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例中一种REST统一校验方法的实施流程图;
图2为开发过程中创建格式对象时,所创建的格式文件内容示意图;
图3为图2中请求参数省略部分“...”的内容示意图;
图4为参数值的约束内容示意图;
图5为本发明实施例中一种REST统一校验方法的具体实施流程图;
图6为本发明实施例中一种REST统一校验装置的结构示意图;
图7为本发明实施例中一种REST统一校验设备的结构示意图。
具体实施方式
本发明的核心是提供一种REST统一校验方法,该方法通过预先设置不同的REST接口,REST接口与URI(Uniform Resource Identifier,统一资源标识符)对应匹配的格式对象。并在每个格式对象中预先定义了对应的REST接口的参数的校验项目以及校验参数。因此,即可在接收到各个REST接口的REST 请求时,利用格式对象对该REST请求中的参数进行校验,而不必为每一个接口设置不用的检验方法。仅通过一个REST统一校验方法或称之为一套REST 校验流程便可对多个不同的REST接口进行校验,即实现REST的统一校验,简化开发过程。
本发明的另一个核心是提供与上述REST统一校验方法相对应的REST统一校验装置、设备和可读存储介质。
为了使本技术领域的人员更好地理解本发明方案,下面结合附图和具体实施方式对本发明作进一步的详细说明。显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
实施例一:
请参考图1,图1为本发明实施例中一种REST统一校验方法的流程图,该方法包括以下步骤:
S101、接收REST请求。
本发明实施例所提供的技术方案可应用于使用了REST的软件系统中。因 REST请求对REST进行调整的操作请求,而REST又与URI一一匹配,因而 REST请求可以认为是对应某个URI中的内容进行操作的请求。
该REST请求可以为用户在客户端发送的增加、修改、调整或查看URL 内容的请求。例如,可以为修改用户名的请求,可以为删除某条浏览记录的请求,也可以为查看某图片的请求。需要说明的是,在本申请中,对于REST请求操作的对象、REST请求的具体内容均不做限定。也就是说,区别于现有的一个校验方法仅可判定一种或一类REST请求的方法或方式不同,本发明实施例所提供的方法可对REST请求进行统一的校验,因而对于REST请求本身可无需限定为某一特定的REST接口对应的请求。
S102、判断预设格式树中是否存在与REST请求对应的目标格式对象。
其中,在所述预设格式树中,与各个REST接口对应的节点分别对应一个格式对象,所述格式对象包括各个校验项目分别对应的校验参数。
在本发明实施例中,可以预先设置一个格式树,并在格式树与REST接口对应的节点上建立对应的格式对象。例如,例如存在两个REST接口的URI 分别为/rest/device和/rest/device/fan,则格式树中“device”节点,有“/rest/device”接口的格式对象;“fan”节点也具有“/rest/device/fan”接口的格式对象。需要说明的是,所创建格式对象与REST请求具有对应关系。具体的,可以为每一个URI创建一个格式对象,在该格式对象中设置对该URI中的内容进行操作的REST请求的参数进行定义。可以定义参数的类别、参数值、参数间的依赖关系、参数间的互斥关系等凡是与参数相关的内容均可进行定义。
可以通过REST请求的标签信息与预设格式树的各个节点对应的关系,确定是否存在与该REST请求对应的目标格式对象。例如,该标签信息可为REST 请求操作的对象的URI。
如果是,则执行步骤S103;如果否,则认为该REST请求为错误请求,直接输出错误提示信息。
S103、获取目标格式对象。
在确定出REST请求具有对应的目标格式对象之后,可以通过读取的方式获取目标格式对象。具体的,可以读取目标格式对象的标签信息如名字或编号,也可以读取目标格式对象中的各个校验项目分别对应的校验参数。
S104、利用各个校验项目分别对应的校验参数对REST请求进行校验。
在对REST请求进行校验时,主要利用各个校验项目分别对应的校验参数,判断该REST请求中的参数、参数值与该REST请求对应的REST接口的参数要求是否匹配或算法符合REST接口的要求或定义。当前,在对REST请求的参数进行校验之前,还可以对用户的身份进行校验,对用户权限进行校验。
优选地,当接收到的REST请求为具有TOKEN的请求时。可以在对REST 请求中的参数进行校验之前,先进行TOKEN校验。具体的,TOKEN校验包括:
步骤一、
对REST请求中的TOKEN进行校验;
步骤二、如果校验失败,则停止校验并输出校验失败结果。
为便于描述,下面将上述步骤一和步骤二结合起来进行说明。
在REST客户端与服务端交互时,通过客户端,用户可以使用用户名和密码向服务端请求TOKEN。请求了TOKEN之后,利用客户端发送的REST请求将TOKEN放置HTTP头部,供服务端验证客户端的身份。当然,TOKEN 存在有效期,在TOKEN过期时,客户端应该重新请求TOKEN。校验TOKEN 有效性,校验成功转到下一步,即S104;否则停止校验并输出校验失败结果。如此,便可保障REST请求的合法性,减少非法用户的恶意操作。
对于身份进行校验,对用户权限进行校验,对TOKEN进行校验的校验顺序可顺序执行,可并行执行。需要注意的是,在校验过程中,一旦出现某校验失败,即可停止校验并输出校验失败结果,以此来减少非必要校验,提升校验效率,减少计算机资源浪费。
应用本发明实施例所提供的方法,当接收到REST请求时,可在预设格式树中确定并获取出与REST请求对应的目标格式对象。其中,在所述预设格式树中,与各个REST接口对应的节点分别对应一个格式对象,所述格式对象包括各个校验项目分别对应的校验参数;当在预设格式树中未找到目标格式对象时,可以认为当前接收到的REST请求为非正常请求,可直接返回校验失败或请求错误的提示信息,以此来减少校验次数,提高校验效率。然后利用该目标格式对象即可完成对REST请求中的参数进行校验。也就是说,只要在开发过程中,创建好了各种REST请求对应的格式对象。该格式对象中规定了对应的 REST请求所需校验的校验项目,以及各个校验项目对象的校验参数。即,可在接收到REST请求时,顺利完成对各种REST请求的参数进行校验,即实现了RSET统一校验。因无需为每一个REST请求(REST接口)分别设置不同的校验方法,简化了开发过程。另外,由于无需为每个REST接口的单独创建校验方法,在实际的校验处理逻辑中的,也可简化代码,减少函数或方法之间的调用,能够有效的提高代码准确率,进一步提升REST校验结果的准确率。
需要说明的是,基于上述实施例一,为便于本领域技术人员理解和实现本发明实施例所提供的技术方案,本发明实施例还提供了相应的改进方案。在后续实施例中涉及与上述实施例一中相同步骤或相应步骤之间可相互参考,相应的有益效果也可相互参照,在下文的改进实施例中不再一一赘述。
优选地,可以根据各个REST接口作为最小单位,为每一个REST接口建立对应的格式对象。具体包括以下步骤:
步骤一、为每个REST接口分别创建格式文件。
其中,格式文件的文件路径与REST接口的URI一致,格式文件包括对应的REST接口的必选参数、参数间互斥关系、参数间依赖关系、参数值范围。
为每一个REST接口创建一个格式文件,该格式文件即为REST接口对应的参数定义,或者称为校验与该REST接口对应的RSET请求的正确性进行各项校验时的校验参数。具体的,可以采用JSON格式,为每个REST接口对应的格式文件添加文件内容。其中,文件内容包括REST接口支持的协议、支持的方法、是否校验Token、参数、参数间互斥关系、参数间依赖关系、参数值、参数值间互斥关系、参数值间依赖关系等。
步骤二、将各个格式文件加载至内存中,并利用各个格式文件分别对应的文件路径创建格式树。
将所有的格式文件加载至内存中,并利用文件路径创建格式树,即每一个格式文件的文件路径可以在格式树中唯一确定出一个对应的节点。
步骤三、将各个格式文件解析为当前开发语言对应的格式对象,并存入格式树中。
对格式文件进行解析,可以解析为当前开发语言可识别的格式对象,并存入格式树中。其中,当前的开发语言可以为常见的开发语言,例如:使用java 语言开发,可以将格式文件解析成java对象;使用python语言开发时,将格式文件解析成python对象,本发明实施例不限定当前的开发语言。
需要说明的是,在本申请中,一个REST接口对应一个格式文件,格式文件路径与REST接口的URI一致。例如,REST接口的URI为“/rest/security/usergrp”,则格式文件路径为“/rest/security/user.fmt”,当然此处为相对目录。由于URI中可能存在变量,例如查询用户组“usergrp1”下的用户列表,URI可能为“/rest/security/usergrp/usergrp1/user”,此处的“usergrp1”为某用户组的名字,是可变的。本发明规定使用“.”表示URI中的变量,此时这个URI为“/rest/security/usergrp/./user”。
在创建好了所有或常用的REST接口分别对应的格式对象之后,可以通过执行上述实施例一所描述的校验步骤的操作实现REST的统一校验。
优选地,实施例一中的步骤S102时,可以包括:
步骤一、利用REST请求的目标URI,查找并判断格式树是否存在与REST 请求对应的目标节点;
如果否,执行步骤二;如果是,在执行步骤三。
步骤二、直接确定不存在与REST请求对应的目标格式对象;
步骤三、判断目标节点是否存在对应的目标格式对象。
为便于描述,下面将上述三个步骤结合起来进行说明。
由于创建的格式对象与REST接口具有一一对应关系,而REST请求的目标URI与REST也具有对应关系。因此,REST请求与格式对象也具体对应关系。可以利用REST请求的目标URI与格式对象之间的对应关系,可以在格式树中先确定是否存在与REST请求对应的目标节点。如果不存在对应的目标节点,则可以认为该REST请求为错误请求,直接停止校验,并输出校验失败结果或REST请求错误的提示信息。当存在对应的目标节点时,则确定该目标节点是否有对应的格式对象,如果有则将该格式对象确定为REST请求对应的目标格式对象。如果没有对应的格式对象,则可能为开发过程中,遗漏了目标节点的格式对象的创立,可以停止校验,并输出校验失败结果或输出格式对象不用存在的提示信息给开发管理人员,以便及时进行补充。
优选地,在获取到目标格式对象之后,在对REST请求进行检验时,即上述例一的步骤S104可以包括以下步骤:
步骤一、利用目标格式对象的各个校验项目分别对应的校验参数对REST 请求中的参数进行校验。
其中,校验项目包括参数值校验、依赖性校验、互斥性校验和必选参数校验。
步骤二、在对各个校验项目校验过程中,在出现任一项校验项目失败时,停止校验并输出校验失败结果。
步骤三、当各个校验项目均通过时,输出校验成功结果。
为便于描述,下面将上述三个步骤结合起来进行说明。
在利用目标格式对象的各个校验项目分别对应的校验参数对REST请求中的参数进行校验时,主要对REST请求中的参数进行参数值校验、依赖性校验、互斥性校验和必选参数校验。
其中,参数值校验,主要判断REST请求中的参数的数值是否符合对应的 REST接口的参数值,以及各个参数值之间的依赖关系和互斥关系。
依赖性校验,主要判断REST请求中的参数之间是否存在缺失。即,某些参数之间存在相互依赖的关系,例如参数值a和参数值b为成对出现,而某个 REST请求中仅包括参数值a,而没有参数值b,此时可认定REST请求不满足参数之间的依赖性,即依赖性校验失败。
互斥性校验,主要判断REST请求中的参数是否存在相互排斥、互相矛盾的情况。例如,当出现参数a时,创建项目c,出现参数b时,删除项目c,参数a与参数b存在互斥关系;当出现一个REST请求,该请求中既有参数a 又有参数b,基于a与b具有互斥关系,即可判断该REST请求为错误请求,校验不通过。
必选参数校验,主要判断某请求是否为完整请求。例如,该请求的URL 为网页的指定图片时,对应的操作仅为查看、删除时,也就是说对应该URL 的REST请求中的参数应对应其中一个,若出现一个REST请求即无查看的参数,也无删除的参数,即可视为无效请求或错误请求。
优选地,由于某些参数存在互斥性,因而,虽然请求中不存在必选参数也可为有效请求或也可通过必选参数校验。为了避免这类情况的产生误判,可选参数判断包括:
步骤一、判断REST请求中是否具有必选参数。
如果是,执行步骤二;如果否,执行步骤三做进一步的判断。
步骤二、直接确定通过必选参数校验。
步骤三、判断是否存在与必选参数具有互斥关系的目标参数。
如果存在目标参数,则确定通过必选参数校验;如果不存在,则直接确定必选参数校验失败。
需要说明的是,在对REST请求的参数进行校验时,当出现任意一项校验失败,则停止校验,并输出校验失败结果;仅当所有的校验均通过时,输出校验成功结果,以便执行REST请求。另外,本发明实施例所指的校验均通过是指当前的对应的REST接口对应需校验的校验项目通过即为通过,而非当前 REST接口对应的校验项目则不需通过或无需进行校验,可直接跳过。
实施例二:
为便本领域技术人员,理解本发明实施例所提供的技术方案,下面以具体的应用实例,并结合具体参数对本发明实施例所提供的技术方案进行详细描述。
请参考图2,图2为开发过程中创建格式对象时,所创建的格式文件内容示意图,其中:
1)"protocol":表示支持的协议,支持取值HTTP、HTTPS、BOTH,BOTH 其中,protocol,默认值(未标明的情况下)为BOTH;
2)"method":表示支持的HTTP方法集合,数组取值不分区大小写,数组元素值可以为get、put、post、patch、delete等,默认支持所有方法;
3)"check_token":表示是否需要校验TOKEN,可取值:yes或no,默认值为yes;
4)"privilege":表示请求REST需要的权限,只有check_token取值yes时,才校验此约束;
5)"privilege.get":表示请求方法为get时需要的权限集,满足集合中的一种权限即可;privilege.put、privilege.patch、privilege.post、privilege.delete同理;
6)"params":表示支持的参数约束;
7)"params.get":表示请求方法为get时的参数约束;params.put请求方法为“put”时的参数约束;params.patch、params.post、params.delete同理;这些约束中的省略号“...”表示内容省略,下文讲解。
HTTP/HTTPS请求参数分两种情况,一种在请求body中,另一种在请求 URI后。如“http:182.16.3.32:8080/rest/security/usergrp?type=root&name=grp1”,其中参数在URI后时,“type”、“name”为参数,这些参数的取值只是简单数据类型(数字、字符串)不能是数组或对象。参数在body中时,本发明参数内容可以为JSON对象,且JSON对象中只包含简单数据类型的属性(不包含对象或数组),这就与URI后的参数类似了,将另种形式的参数统一了起来。
接下来介绍图3,图3为图2中请求参数省略部分“...”的内容示意图。“...”为数组内容,数组的每个元素为一个对象,对应一个参数的约束,如图 2所示。
1)"name":表示参数名;
2)"required":表示参数是否为必选,可取值:yes或no,默认值为no;
3)"dependent":表示参数的依赖关系;
4)"dependent[i]":表示参数的其中一个依赖集,参数满足其中一个 dependent[i]的约束即可;
5)"dependent[i][j]":对于dependent[i]而言,参数必须满足所有的dependent[i][j](j=0,1,...)时,才认为参数满足dependent[i]约束。
6)"dependent[i][j].option":表示依赖参数的参数名;
7)"dependent[i][j].values":表示依赖参数的参数值,满足其中一个值即可,如果此字段不存在,但option字段存在,表示依赖整个参数;
8)"mutex":表示参数的互斥号集合,存在相同互斥号的参数是互斥的;
9)"value":表示参数值的约束。不存在此属性时,表示此参数无参数值,此属性内容省略,下文叙述。
如图4所示,图4为参数值的约束内容示意图:
1)"allowList":是否允许多个参数值,多个参数值以英文冒号分割,可取值:yes或no,默认值为no;
2)"is_number":参数值类型是否为数字,可取值:yes或no,默认值为no;
3)"allowed_values":可取值的集合,存在此属性时,参数值只能取此集合中的值;
4)"rang":参数值为数字时,表示参数值的取值范围;参数值为字符串时,表示字符串长度的取值范围;
5)"rang.max":最大值;
6)"rang.min":最小值;
7)"rang.step":取值步长;
8)"regular":参数值须要满足的正则表达式,只对字符串类型的参数值有效;
9)"regular_dependent":表示对参数值的正则校验依赖其它参数,只对字符串类型的参数值有效;
10)"regular_dependent[i].option_name":表示依赖参数的参数名;
11)"regular_dependent[i].option_value":表示依赖参数的参数值;
12)"regular_dependent[i].regular":满足此依赖时,参数值须要满足的正则表达式;
13)"relation":参数值的依赖和互斥约束;
14)"relation[i].value":此参数取此值时需要满足此约束;
15)"relation[i].dependent":参数值的依赖约束,类似参数的dependent约束,不同之处是,一个是对参数的依赖约束,一个是对参数值的依赖约束;
16)"relation[i].mutex":参数值的互斥号集合,具有相同互斥号的参数值或参数之间互斥。
上述约束中,allowed_values、rang、regular、regular_dependent对参数值的约束存在矛盾,为此实例中这四个约束优先级为(由高到低),即:
1)当存在"allowed_values"时,则不必满足其它三个约束;
2)当满足"regular_dependent"满足时,不必满足"rang"、"regular";
3)当满足"regular"时,不必满足"rang"。
需要说明的是,格式文件中所有约束字段都可以不存在,不存在时按约束的默认值校验REST请求,如果没有默认值,则不对REST请求进行此约束的校验。
在实际应用中,如程序启动时,解析模块将所有REST接口的格式文件加载到内存中,并解析成开发语言所识别的对象(本发明实施例中将此对象称为格式对象),按照格式文件路径,将格式对象放到树形结构中(本发明实施例将此树称为格式树),格式对象在格式树中的位置由REST接口的URI(与格式文件路径一致)确定。例如,某REST接口的URI为“/rest/security/usergrp”, 则此接口的格式对象在格式树中的位置为:
“节点rest”->“节点security”->“节点usergrp”
即,此REST接口的格式文件放置在树形结构的“节点usergrp”中。
本发明中REST客户端与服务端交互时,客户端可以使用“用户名”和“密码”向服务端请求TOKEN,之后客户端发送的REST可将TOKEN放置HTTP 头部,供服务端验证客户端的身份。当然,TOKEN存在有效期,在TOKEN 过期时,客户端应该重新请求TOKEN。
如图5展示了接收到REST请求后,对REST请求的校验流程,具体如下:
S1:根据请求URI,在格式树中查找此URI对应的格式对象,如果找到,则进行下一步,否则转到S91;
S2:根据格式对象,当"check_token"值为"yes"时转到下一步;否则转到S5;
S3:校验TOKEN有效性,校验成功转到下一步;否则转到S91;
S4:根据TOKEN获取对应用户的权限,校验是否满足格式对象中 "privilege"要求,如果满足,则转到下一步;否则转到S91;
S5:根据格式对象内容,校验参数值是否满足要求,如果满足,则转到下一步;否则转到S91;
S6:根据格式对象内容,校验所有必选参数是否输入(如果参数a、b均为必选参数,则a、b存在一个即认为必选参数已输入),如果满足,则转到下一步;否则转到S91;
S7:根据格式对象内容,校验参数及参数值的依赖性,如果满足,则转到下一步;否则转到S91;
S8:根据格式对象内容,校验参数及参数值的互斥性;
S91:返回校验失败结果,校验结束。
S92:返回校验成功结果,校验结束。
综上,通过引入REST请求与格式对象(由格式文件解析而来),结合上述校验流程,形成了一种REST统一校验方法。这种方法,一方面在开发REST 接口时,只需要定义简单的格式文件即可,不需要再为每个REST请求单独校验,特别是在REST接口很多时,能明显提高开发效率。另一方面,将校验提取成单独模块,体现了模块化编程。
相应于上面的方法实施例,本发明实施例还提供了一种存储系统配置装置,下文描述的存储系统配置装置与上文描述的存储系统配置方法可相互对应参照。
参见图6示,该装置包括以下模块:
REST请求接收模块101,用于接收REST请求;
目标格式对象判断模块102,用于判断预设格式树中是否存在与所述 REST请求对应的目标格式对象;其中,在所述预设格式树中,与各个REST 接口对应的节点分别对应一个格式对象,所述格式对象包括各个校验项目分别对应的校验参数;
目标格式对象获取模块103,用于当存在所述目标格式对象,获取所述目标格式对象;
REST请求校验模块104,用于利用所述目标格式对象的各个校验项目分别对应的校验参数对所述REST请求进行校验。
应用本发明实施例所提供的装置,当接收到REST请求时,可在预设格式树中确定并获取出与REST请求对应的目标格式对象。其中,在预设格式树中,与各个REST接口对应的节点分别对应一个格式对象,格式对象包括各个校验项目分别对应的校验参数;当在预设格式树中未找到目标格式对象时,可以认为当前接收到的REST请求为非正常请求,可直接返回校验失败或请求错误的提示信息,以此来减少校验次数,提高校验效率。然后利用该目标格式对象即可完成对REST请求中的参数进行校验。也就是说,只要在开发过程中,创建好了各种REST请求对应的格式对象。该格式对象中规定了对应的REST请求所需校验的校验项目,以及各个校验项目对象的校验参数。即,可在接收到 REST请求时,顺利完成对各种REST请求的参数进行校验,即实现了RSET 统一校验。因无需为每一个REST请求(REST接口)分别设置不同的校验方法,简化了开发过程。另外,由于无需为每个REST接口的单独创建校验方法,在实际的校验处理逻辑中的,也可简化代码,减少函数或方法之间的调用,能够有效的提高代码准确率,进一步提升REST校验结果的准确率。
在本发明的一种具体实施方式中,还包括:
式对象创建模块,用于为每个REST接口分别创建格式文件;其中,格式文件的文件路径与REST接口的URI一致,格式文件包括对应的REST接口的必选参数、参数间互斥关系、参数间依赖关系、参数值范围;将各个格式文件加载至内存中,并利用各个格式文件分别对应的文件路径创建格式树;将各个格式文件解析为当前开发语言对应的格式对象,并存入格式树中。
在本发明的一种具体实施方式中,目标格式对象判断模块102,具体用于利用REST请求的目标URI,查找并判断格式树是否存在与REST请求对应的目标节点;如果否,则直接确定不存在与REST请求对应的目标格式对象;如果是,则判断目标节点是否存在对应的目标格式对象。
在本发明的一种具体实施方式中,REST请求校验模块104,包括:
参数校验单元,用于利用目标格式对象的各个校验项目分别对应的校验参数对REST请求中的参数进行校验;其中,校验项目包括参数值校验、依赖性校验、互斥性校验和必选参数校验;
校验失败结果输出单元,用于在对各个校验项目校验过程中,在出现任一项校验项目失败时,停止校验并输出校验失败结果;
校验成功结果输出单元,用于当各个校验项目均通过时,输出校验成功结果。
在本发明的一种具体实施方式中,参数校验单元,具体用于在必选参数校验时,判断REST请求中是否具有必选参数;如果是,则直接确定通过必选参数校验;如果否,则进一步判断是否存在与必选参数具有互斥关系的目标参数;如果存在目标参数,则确定通过必选参数校验。
在本发明的一种具体实施方式中,REST请求接收模块101,具体用于接收具有TOKEN的REST请求。
在本发明的一种具体实施方式中,还包括:
TOKEN校验模块,用于在利用目标格式对象的各个校验项目分别对应的校验参数对REST请求进行校验之前,对REST请求中的TOKEN进行校验;如果校验失败,则停止校验并输出校验失败结果。
相应于上面的方法实施例,本发明实施例还提供了一种REST统一校验设备,下文描述的一种REST统一校验设备与上文描述的一种REST统一校验方法可相互对应参照。
参见图7所示,该REST统一校验设备包括:
存储器D1,用于存储计算机程序;
处理器D2,用于执行计算机程序时实现上述方法实施例的REST统一校验方法的步骤。
相应于上面的方法实施例,本发明实施例还提供了一种可读存储介质,下文描述的一种可读存储介质与上文描述的一种REST统一校验方法可相互对应参照。
一种可读存储介质,可读存储介质上存储有计算机程序,计算机程序被处理器执行时实现上述方法实施例的REST统一校验方法的步骤。
该可读存储介质具体可以为U盘、移动硬盘、只读存储器(Read-Only Memory,ROM)、随机存取存储器(Random Access Memory,RAM)、磁碟或者光盘等各种可存储程序代码的可读存储介质。
本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其它实施例的不同之处,各个实施例之间相同或相似部分互相参见即可。对于实施例公开的装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。
专业人员还可以进一步意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
结合本文中所公开的实施例描述的方法或算法的步骤可以直接用硬件、处理器执行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(RAM)、内存、只读存储器(ROM)、电可编程ROM、电可擦除可编程ROM、寄存器、硬盘、可移动磁盘、CD-ROM、或技术领域内所公知的任意其它形式的存储介质中。
本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的技术方案及其核心思想。应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以对本发明进行若干改进和修饰,这些改进和修饰也落入本发明权利要求的保护范围内。
Claims (9)
1.一种REST统一校验方法,其特征在于,包括:
接收REST请求;
判断预设格式树中是否存在与所述REST请求对应的目标格式对象;其中,在所述预设格式树中,与各个REST接口对应的节点分别对应一个格式对象,所述格式对象包括各个校验项目分别对应的校验参数;
如果是,则获取所述目标格式对象;
利用所述目标格式对象的各个校验项目分别对应的校验参数对所述REST请求进行校验;
为每个REST接口分别创建格式文件;其中,所述格式文件的文件路径与REST接口的URI一致,所述格式文件包括对应的REST接口的必选参数、参数间互斥关系、参数间依赖关系、参数值范围;
将各个所述格式文件加载至内存中,并利用各个所述格式文件分别对应的文件路径创建格式树;
将各个所述格式文件解析为当前开发语言对应的格式对象,并存入所述格式树中。
2.根据权利要求1所述的REST统一校验方法,其特征在于,所述判断预设格式树中是否存在与所述REST请求对应的目标格式对象,包括:
利用所述REST请求的目标URI,查找并判断所述格式树是否存在与所述REST请求对应的目标节点;
如果否,则直接确定不存在与所述REST请求对应的目标格式对象;
如果是,则判断所述目标节点是否存在对应的所述目标格式对象。
3.根据权利要求1所述的REST统一校验方法,其特征在于,利用所述目标格式对象的各个校验项目分别对应的校验参数对所述REST请求进行校验,包括:
利用所述目标格式对象的各个校验项目分别对应的校验参数对所述REST请求中的参数进行校验;其中,所述校验项目包括参数值校验、依赖性校验、互斥性校验和必选参数校验;
在对各个所述校验项目校验过程中,在出现任一项所述校验项目失败时,停止校验并输出校验失败结果;
当各个所述校验项目均通过时,输出校验成功结果。
4.根据权利要求3所述的REST统一校验方法,其特征在于,必选参数校验,包括:
判断所述REST请求中是否具有所述必选参数;
如果是,则直接确定通过所述必选参数校验;
如果否,则进一步判断是否存在与所述必选参数具有互斥关系的目标参数;
如果存在所述目标参数,则确定通过所述必选参数校验。
5.根据权利要求1所述的REST统一校验方法,其特征在于,所述接收REST请求,包括:
接收具有TOKEN的REST请求。
6.根据权利要求5所述的REST统一校验方法,其特征在于,在利用所述目标格式对象的各个校验项目分别对应的校验参数对所述REST请求进行校验之前,还包括:
对所述REST请求中的TOKEN进行校验;
如果校验失败,则停止校验并输出校验失败结果。
7.一种REST统一校验装置,其特征在于,包括:
REST请求接收模块,用于接收REST请求;
目标格式对象判断模块,用于判断预设格式树中是否存在与所述REST请求对应的目标格式对象;其中,在所述预设格式树中,与各个REST接口对应的节点分别对应一个格式对象,所述格式对象包括各个校验项目分别对应的校验参数;
目标格式对象获取模块,用于当存在所述目标格式对象,获取所述目标格式对象;
REST请求校验模块,用于利用所述目标格式对象的各个校验项目分别对应的校验参数对所述REST请求进行校验;
对象创建模块,用于为每个REST接口分别创建格式文件;其中,所述格式文件的文件路径与REST接口的URI一致,所述格式文件包括对应的REST接口的必选参数、参数间互斥关系、参数间依赖关系、参数值范围;将各个所述格式文件加载至内存中,并利用各个所述格式文件分别对应的文件路径创建格式树;将各个所述格式文件解析为当前开发语言对应的格式对象,并存入所述格式树中。
8.一种REST统一校验设备,其特征在于,包括:
存储器,用于存储计算机程序;
处理器,用于执行所述计算机程序时实现如权利要求1至6任一项所述REST统一校验方法的步骤。
9.一种可读存储介质,其特征在于,所述可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如权利要求1至6任一项所述REST统一校验方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810677117.1A CN109324958B (zh) | 2018-06-27 | 2018-06-27 | 一种rest统一校验方法、装置、设备及可读存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810677117.1A CN109324958B (zh) | 2018-06-27 | 2018-06-27 | 一种rest统一校验方法、装置、设备及可读存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109324958A CN109324958A (zh) | 2019-02-12 |
CN109324958B true CN109324958B (zh) | 2021-10-29 |
Family
ID=65263117
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810677117.1A Active CN109324958B (zh) | 2018-06-27 | 2018-06-27 | 一种rest统一校验方法、装置、设备及可读存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109324958B (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110188038B (zh) * | 2019-05-13 | 2023-07-21 | 青岛海尔科技有限公司 | 一种参数校验方法及装置、校验架构 |
CN111835710B (zh) * | 2020-05-29 | 2023-08-15 | 中国平安财产保险股份有限公司 | 校验请求体的方法、装置、计算机设备和存储介质 |
CN112148540B (zh) * | 2020-08-27 | 2023-03-24 | 云账户技术(天津)有限公司 | 接口参数校验方法、装置、电子设备和可读存储介质 |
CN112261075A (zh) * | 2020-09-07 | 2021-01-22 | 上海泛微软件有限公司 | 网络请求处理方法、装置、设备及计算机可读存储介质 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPS56164468A (en) * | 1980-05-23 | 1981-12-17 | Fujitsu Ltd | Program forming and registrating system for checking of slip format |
CN102129469A (zh) * | 2011-03-23 | 2011-07-20 | 华中科技大学 | 一种面向虚拟实验的非结构化数据访问方法 |
CN106775937A (zh) * | 2016-12-02 | 2017-05-31 | 郑州云海信息技术有限公司 | 一种命令行校验方法及装置 |
CN107222363A (zh) * | 2017-05-26 | 2017-09-29 | 郑州云海信息技术有限公司 | 一种存储协议一致性测试方法及系统 |
CN107908485A (zh) * | 2017-10-26 | 2018-04-13 | 中国平安人寿保险股份有限公司 | 接口参数传递方法、装置、设备及计算机可读存储介质 |
-
2018
- 2018-06-27 CN CN201810677117.1A patent/CN109324958B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPS56164468A (en) * | 1980-05-23 | 1981-12-17 | Fujitsu Ltd | Program forming and registrating system for checking of slip format |
CN102129469A (zh) * | 2011-03-23 | 2011-07-20 | 华中科技大学 | 一种面向虚拟实验的非结构化数据访问方法 |
CN106775937A (zh) * | 2016-12-02 | 2017-05-31 | 郑州云海信息技术有限公司 | 一种命令行校验方法及装置 |
CN107222363A (zh) * | 2017-05-26 | 2017-09-29 | 郑州云海信息技术有限公司 | 一种存储协议一致性测试方法及系统 |
CN107908485A (zh) * | 2017-10-26 | 2018-04-13 | 中国平安人寿保险股份有限公司 | 接口参数传递方法、装置、设备及计算机可读存储介质 |
Non-Patent Citations (1)
Title |
---|
一种基于REST架构的高校移动教务数据开放平台设计方法;赵启升等;《江苏科技大学学报(自然科学版)》;20141015(第05期);第95-99页 * |
Also Published As
Publication number | Publication date |
---|---|
CN109324958A (zh) | 2019-02-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109324958B (zh) | 一种rest统一校验方法、装置、设备及可读存储介质 | |
US8745641B1 (en) | Automatic verification and anomaly detection in a representational state transfer (REST) application programming interface | |
US10177996B2 (en) | System and method for validating documentation of representational state transfer (REST) services | |
KR101755365B1 (ko) | 레코드 포맷 정보의 관리 | |
EP2175373B1 (en) | Test data creation and execution system for service oriented architecture | |
US8136095B2 (en) | Relations in fuzzing data | |
CN108628748B (zh) | 自动化测试管理方法和自动化测试管理系统 | |
US9355269B2 (en) | Method and system for managing uniquely identifiable bookmarklets | |
JP2008299540A (ja) | Webサービス提供システム検査装置及びWebサービス提供システム検査プログラム | |
US20160127409A1 (en) | Web service testing | |
CN112214714A (zh) | 基于配置文件的请求处理方法、装置、设备及存储介质 | |
CN108388796B (zh) | 动态域名验证方法、系统、计算机设备和存储介质 | |
US20040168064A1 (en) | System of generating procedure for digital signature and encryption to XML | |
CN110516258B (zh) | 数据校验方法及装置、存储介质、电子装置 | |
CN113254210A (zh) | 一种基于云服务的ofd文件签章验证方法、系统及设备 | |
CN113536177A (zh) | 一种页面跳转方法、装置、服务器和存储介质 | |
CN112306973A (zh) | 一种图片导入系统及方法 | |
CN113761879A (zh) | 报文格式校验方法、装置以及存储介质 | |
CN116361793A (zh) | 代码检测方法、装置、电子设备及存储介质 | |
CN113672233B (zh) | 一种基于Redfish的服务器带外管理方法、装置及设备 | |
CN116166533A (zh) | 接口测试方法、装置、终端设备以及存储介质 | |
US11829283B2 (en) | REST Api validation | |
US20140337069A1 (en) | Deriving business transactions from web logs | |
CN112800194A (zh) | 一种接口变更识别方法、装置、设备及存储介质 | |
CN117435829B (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 |