一种webAPI的配置及执行方法、系统及介质与流程

文档序号:16536025发布日期:2019-01-08 19:54阅读:279来源:国知局
一种web API的配置及执行方法、系统及介质与流程

本发明涉及计算机网络和数据库领域,尤其涉及一种webapi的配置及执行方法、系统及介质。



背景技术:

在传统的web应用开发中,对于webapi的设计和实现,主要采用以下两种方法:

第一种方法是在代码层面创建api。即软件开发商在开发一套商业软件时,根据软件的使用场合,设计和创建出api,一旦软件开发完成,这些api也就被创建了出来。要是以后有新的业务需求,需要创建新的api,则需要重新编写代码,这种创建api方式不灵活,且需要编写新的代码,创建出的api也不方便管理。

第二种方法是通过一些软件服务提供商的apigateway平台,在第一种方式创建的api的基础上,对原先老旧的、不适合现有业务情景的api进行拓展,这种方式可以在不编写代码的情况下,为原来的api增加新的请求参数、改变原来api的请求方式(例如,将get请求变为post请求、将post请求变为get请求等)、改变响应体的属性等等,从而生成一些新的api,这种创建api的方式依赖原有的api,只能在原来的api的基础上进行拓展创建,方式较为单一。

涉及数据库操作的每个api通常都包含以下三个操作步骤:1.接收访问请求;2.处理业务逻辑得到处理结果;3.持久化处理结果。

在持久化处理结果的操作中,往往还需要对数据库和持久化代码进行另外地配置。即,在根据新的需求增加新的api设计和实现之后,还需要对应地增加新的配置文件,并对这些配置文件进行维护。尽管软件设计师们在后来提出了orm的概念,但是数据库和持久化业务代码之间的配置仍然十分繁琐,本质上并没有发生任何改变。

由于现有技术的设计和实现步骤繁琐、效率底下、后期维护成本高、与webapi相关的配置操作复杂,因此,需要提出新的技术方案。



技术实现要素:

根据本发明的webapi的配置及执行方法,包括:

获取webapi的名称或唯一标识符、webapi所涉及的web字段名、webapi的操作类型;

获取webapi所涉及的数据库和/或数据表和数据字段名;

存储名称或唯一标识符、操作类型、web字段名与数据字段名之间的映射关系,从而完成webapi的接口配置操作。

根据本发明的webapi的配置及执行方法,还包括:

接收webapi的执行请求;

基于名称或唯一标识符、操作类型、web字段名、映射关系、执行请求中与web字段名对应的web字段值,自动构造用于访问数据库的sql语句;

执行sql语句并获取sql语句执行结果;

基于数据字段名、映射关系、sql语句执行结果中与数据字段名对应的数据字段值,自动构造webapi的执行结果。

根据本发明的webapi的配置及执行方法,在完成webapi的接口配置操作的步骤之后,还包括:

结合数据库进行与webapi相关的功能性测试。

根据本发明的webapi的配置及执行方法,其接口配置操作还包括:

存储用于指示针对不同客户是否启用webapi的状态指示标识。

根据本发明的webapi的配置及执行方法,其映射关系使用swagger规范进行描述。

根据本发明的webapi的配置及执行系统,包括:

web配置输入模块,用于获取webapi的名称或唯一标识符、webapi所涉及的web字段名、webapi的操作类型;

数据库配置输入模块,用于获取webapi所涉及的数据库和/或数据表和数据字段名;

配置信息存储模块,用于存储名称或唯一标识符、操作类型、web字段名与数据字段名之间的映射关系,从而完成webapi的接口配置操作。

根据本发明的webapi的配置及执行系统,还包括:

web接口模块,用于接收webapi的执行请求,以及,用于发送webapi的执行结果;

转换模块,用于基于名称或唯一标识符、操作类型、web字段名、映射关系、执行请求中与web字段名对应的web字段值,自动构造用于访问数据库的sql语句,以及,用于基于数据字段名、映射关系、sql语句执行结果中与数据字段名对应的数据字段值,自动构造webapi的执行结果;

sql语句执行模块,用于执行sql语句并获取sql语句执行结果。

根据本发明的webapi的配置及执行系统,还包括:

测试模块,用于在完成webapi的接口配置操作之后,结合数据库进行与webapi相关的功能性测试。

根据本发明的webapi的配置及执行系统,其配置信息存储模块还用于:

存储用于指示针对不同客户是否启用webapi的状态指示标识。

根据本发明的计算机可读存储介质,存储介质上存储有计算机程序,程序被处理器执行时实现上文所述的方法的步骤。

根据本发明的上述技术方案,只需通过对数据库进行配置就可以生成api,不仅提高了软件和服务供应商实现api的效率,还降低了后期对api的维护成本。

附图说明

并入到说明书中并且构成说明书的一部分的附图示出了本发明的实施例,并且与相关的文字描述一起用于解释本发明的原理。在这些附图中,类似的附图标记用于表示类似的要素。下面描述中的附图是本发明的一些实施例,而不是全部实施例。对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,可以根据这些附图获得其他的附图。

图1示例性地示出了根据本发明的webapi的配置及执行方法的示意流程图。

图2示例性地示出了根据本发明的webapi的配置及执行系统的示意框图。

图3示例性地示出了根据本发明的webapi的配置及执行系统的一个示例的示意图。

图4示例性地示出了图3所示的示例系统中的crystal模块及其相关操作步骤的示意图。

具体实施方式

为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明的一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互任意组合。

图1示例性地示出了根据本发明的webapi的配置及执行方法的示意流程图。

如图1的实线框所示,根据本发明的webapi的配置及执行方法,包括:

步骤s102:获取webapi的名称或唯一标识符、webapi所涉及的web字段名、webapi的操作类型;

步骤s104:获取webapi所涉及的数据库和/或数据表和数据字段名;

步骤s106:存储名称或唯一标识符、操作类型、web字段名与数据字段名之间的映射关系,从而完成webapi的接口配置操作。

可选地,如图1的虚线框所示,根据本发明的webapi的配置及执行方法,还包括:

步骤s108:接收webapi的执行请求;

步骤s110:基于名称或唯一标识符、操作类型、web字段名、映射关系、执行请求中与web字段名对应的web字段值,自动构造用于访问数据库的sql语句;

步骤s112:执行sql语句并获取sql语句执行结果;

步骤s114:基于数据字段名、映射关系、sql语句执行结果中与数据字段名对应的数据字段值,自动构造webapi的执行结果。

可选地,如图1的虚线框所示,根据本发明的webapi的配置及执行方法,在完成webapi的接口配置操作的步骤之后,还包括:

步骤s116:结合数据库进行与webapi相关的功能性测试。

测试者可以进入用于测试的交互操作界面,在其中选择需要测试的具体webapi的名称或标识,根据系统提示进行测试操作。例如,如果要对执行写入数据库操作(例如,对应http协议支持的post类型的操作)的webapi进行功能性测试,则需要填写需要增加的记录中的各个名称的web字段所对应的web字段值(例如,通过交互操作界面中的用户名、用户id、出生日期、性别等文本输入框输入的文本或数值、或通过对应的列表框选择的文本或数值);然后点击“执行”或“确定”按钮提交测试请求;根据交互界面中返回的结果(例如,http响应的内容、和/或新增加的记录的具体信息)来判断webapi的执行是否成功(例如,如果http响应代码为200、数据库中新增加的记录与输入记录相同,则认为测试成功;否则,则认为测试成功)。

可选地,也可以通过自动化测试程序来自动执行上述功能性测试。

例如,可以在设计api的同时(即,在步骤s106中),把包含测试数据和正确测试结果的测试用例(模板)配置好。采用这种方法,在每次提交相关的测试用例(模板)之后,系统会自动将测试数据发送到后台,并自动比对实际测试结果与正确测试结果是否一致,从而自动输出测试是否成功的结论。

可选地,如图1的虚线框所示,根据本发明的配置及执行方法,接口配置操作还包括:

步骤s118:存储用于指示针对不同客户是否启用webapi的状态指示标识。

可选地,根据本发明的配置及执行方法,其映射关系使用swagger规范进行描述。

例如,swagger规范可以用于描述webapi的操作类型。类型为读的api对应http的get、head请求,类型为写的api对应http的put、post、delete等请求。

例如,可以采用以下方式定义对应httppost类型的webapi所涉及的一个web字段a:

“post”:{

“parameters”:

{

“in”:“path”,

“name”:“a”,

“required”:“true”,

“type”:“integer”

…}

}

例如,可以采用以下方式定义上述web字段a和一个数据库字段b之间的一一映射关系:

{…

“columnname”:“b”,

“value”:“a”

…}

即,数据库字段和api参数(即,web字段)之间的对应关系是:一个数据库字段与一个api参数及其参数值对应(不存在一对多关系,数据库字段和api参数均为一一对应)。

可以根据需要类似地添加各种类型的webapi、及其涉及的web字段和数据库字段。

图2示例性地示出了根据本发明的webapi的配置及执行系统200的示意框图。

如图2的实线框所示,webapi的配置及执行系统200包括:

web配置输入模块201,用于获取webapi的名称或唯一标识符、webapi所涉及的web字段名、webapi的操作类型;

数据库配置输入模块203,用于获取webapi所涉及的数据库和/或数据表和数据字段名;

配置信息存储模块205,用于存储名称或唯一标识符、操作类型、web字段名与数据字段名之间的映射关系,从而完成webapi的接口配置操作。

例如,这里的数据库可以是图3中所示的“客户数据库系统”或“d2a业务数据库”。

例如,配置信息存储模块205可以将上述配置信息存储到d2a业务数据库中。

可选地,如图2的虚线框所示,webapi的配置及执行系统200还包括:

web接口模块207,用于接收webapi的执行请求,以及,用于发送webapi的执行结果;

转换模块209,用于基于名称或唯一标识符、操作类型、web字段名、映射关系、执行请求中与web字段名对应的web字段值,自动构造用于访问数据库的sql语句,以及,用于基于数据字段名、映射关系、sql语句执行结果中与数据字段名对应的数据字段值,自动构造webapi的执行结果;

sql语句执行模块211,用于执行sql语句并获取sql语句执行结果。

可选地,如图2的虚线框所示,webapi的配置及执行系统200还包括:

测试模块213,用于在完成webapi的接口配置操作之后,结合数据库进行与webapi相关的功能性测试。

可选地,上述配置信息存储模块205还用于:

存储用于指示针对不同客户是否启用webapi的状态指示标识。

结合根据本发明的上述方法和系统,还提出了一种计算机可读存储介质,存储介质上存储有计算机程序,程序被处理器执行时实现图1所示的方法的步骤。

为了使本领域技术人员更清楚地理解本发明的上述技术方案,下面将结合具体示例进行说明。

图3示例性地示出了根据本发明的webapi的配置及执行系统的一个示例的示意图。

由图3中的虚线框所示出的该示例系统,在本文中也将其称作d2a(databasetoapi)系统,是以数据库中的数据表作为操作对象、以swagger规范(现在也被叫做openapi规范)作为描述api基本功能的模板来创建api的。

swagger规范本身只是一个开源的,用于描述api的一套协议,描述出来的api是无法根据数据库数据来创建api的。然而,swagger可以让开发者根据实际的应用场景对swagger规范进行拓展使之能够满足开发者的业务需求。本发明的上述技术方案不限于swagger规范,也可以是诸如xml、json的其他规范或用户自定义规范。

如图3中的虚线框所示,该示例系统包括以下模块或系统:d2a业务数据库、coreapi模块和crystal模块。

d2a业务数据库用于存储d2a系统(其为web系统)运行期间产生的大量业务数据,业务数据包括上述名称或唯一标识符、操作类型、web字段名与数据字段名之间的映射关系等api配置信息。

coreapi模块是用于创建、测试和管理api的业务模块。创建api期间会将api的相关信息和拓展的swagger信息(即,图3中所示的拓展的swagger文档)存入d2a业务数据库(相当于图2中所示的“web配置输入模块201”、“数据库配置输入模块203”、“配置信息存储模块205”、“测试模块213”),客户在调用api期间,则会处理crystal的请求,把和被调用api有关的拓展swagger信息返回给crystal(相当于图2中所示的“配置信息存储模块205”)。

crystal模块是d2a系统中的后端服务模块,也是该示例系统的一个核心模块,用于处理客户(api调用者)调用的api请求(相当于图1中所示的步骤s108和图2中所示的“web接口模块207”),把处理的api结果返回给调用者(相当于图1中所示的步骤s114和图2中所示的“web接口模块219”)。

图3中还示出了一个客户数据库系统。该客户数据库系统用于存储第三方业务系统的外部数据,相当于上文结合图1所述的技术方案中的数据库,不属于该示例系统。即,在该示例中,将d2a系统所创建的api限定为用于该客户数据库系统中的数据库,而非用于d2a业务数据库自身,如上文所述,d2a业务数据库用于存储api配置信息。

对应于结合图1所述的“配置”过程:

例如,如图3所示,基于数据库数据来配置(即,定义或声明)一个或者说一组api,分为以下几个步骤:

s1:使用者创建api,授权相关的数据库系统操作权限,使得本系统可以接入使用者的数据库系统。

s2(对应于图1中的步骤s102和s104):使用coreapi接入客户数据库系统以后,就可以读取到相关的数据库数据,使用者以这些数据库数据(主要是数据表里面的数据字段)为基本信息,对所要创建的api进行配置。对一个api进行创建和配置主要包括:

(1)选择与api对应的数据表(即这个api是对哪张数据表进行curd操作)。

(2)选择api的类型,是读类型还是写类型(见“api类型”)。

(3)选择数据库字段,取决于选择的api类型,这些被选中的数据库字段将会有不同的用途。

(4)定义api参数(即,上述web字段名),并将所定义的参数与上一步选中的数据库字段进行参数到字段的映射。

其中,api是读类型是指,调用api主要能从数据库中获取到数据、api是写类型是指,调用api主要往数据库中写入数据,包括对数据库数据的增删改等。类型为读的api对应restful中的get请求,类型为写的api对应restful中的post和delete请求。其中post请求对应数据库的增、改操作,delete请求对应数据库的删操作。如上文所述,可选地,webapi的类型也可以采用swagger规范进行描述。

s3(对应于图1中的步骤s106):完成api的配置,将api的相关配置保存到本系统中的业务数据库中,相关配置信息包括api基本信息(例如,上述名称或唯一标识符、操作类型、web字段名与数据字段名)和swagger拓展信息(例如,上述web字段名与数据字段名之间的映射关系)。

s4(对应于图1中的步骤s116):可选步骤,对所创建的数据库进行功能性测试,检查是否符合预期的功能。

s5(对应于图1中的步骤s118):api管理功能,对api进行管理,可对单个api设置它针对不同客户的启用状态,也可以为api所对应的数据库信息进行设置,若数据库信息被设置为关闭,那么与该数据库对应的全部api将不可用(这些规定都是来自于本发明技术方案中那个拓展的swagger规则)。

对应于结合图1所述的“执行”过程:

图4示例性地示出了图3所示的示例系统中的crystal模块及其相关操作步骤的示意图。

如图4所示,对于已经创建好的api,调用者在调用api的时候,会将http请求转发到crystal服务执行。具体的执行过程包括:

s6.1(对应于图1中的步骤s108):客户调用创建好的api,http请求会被发送到crystal服务的httpserver模块。

s6.2(对应于图1中的步骤s110中的获取“映射关系”):httpserver接收到调用者(客户)调用的api请求后,会根据请求信息去coreapi调用swagger文档。

s6.3:成功获取到swagger文档后,crystal的swaggervalidator模块会对这个swagger文档进行解析验证,判断api调用者发出的http请求中是否包含swagger文档中描述的信息,并根据验证结果决定是否继续执行后续程序。

s6.4(对应于图1中的步骤s110):当swagger文档验证通过以后,sqlbuilder模块便会根据swagger文档中的拓展信息连接客户数据库系统,并构造sql语句。

s6.5(对应于图1中的步骤s112):构造好sql语句以后,crystal的sqlexecutor模块便会执行sql语句。

s6.6(对应于图1中的步骤s114):把执行sql语句得到的结果返回给api调用者。

根据本发明的上述技术方案,具有以下优点:

1)扩展了创建api的方式,给用户提供了更多的选择。

2)创建api的过程简单灵活、对api的管理方便。

3)不依赖于使用者的任何业务系统,创建的api也和使用者的业务系统完全解耦。

4)兼容多种主流的关系型数据库系统(包括mysql、oracle、sqlserver、postgresql、ibmdb2等),程序架构科学合理,对新数据库的拓展方便。

5)功能完善,实用性强,除了提供创建api的模块以外,还可以提供对所创建的api进行功能性测试、以及查看api使用帮助的模块,使得整个技术方案更具有实用性。

根据本发明的上述技术方案提出了一种基于对数据库的配置来实现api的设计和实现的新思路。即,基于数据库的数据来配置api(这是api的外形),然后基于业务场景制定的(例如,符合swagger规范的)扩展信息来执行api(这是api的实际功能)。

根据本发明的上述技术方案解决了如何通过对数据库的配置来生成api的问题,只需通过对数据库进行配置就可以生成api,改变了常规api的实现方式,不仅提高了软件和服务供应商实现api的效率,还降低了后期对api的维护成本。

上面描述的内容可以单独地或者以各种方式组合起来实施,而这些变型方式都在本发明的保护范围之内。

本领域普通技术人员可以理解,上文中所公开方法中的全部或某些步骤、系统、装置中的功能模块/单元可以被实施为软件、固件、硬件及其适当的组合。在硬件实施方式中,在以上描述中提及的功能模块/单元之间的划分不一定对应于物理组件的划分;例如,一个物理组件可以具有多个功能,或者一个功能或步骤可以由若干物理组件合作执行。某些组件或所有组件可以被实施为由处理器,如数字信号处理器或微处理器执行的软件,或者被实施为硬件,或者被实施为集成电路,如专用集成电路。这样的软件可以分布在计算机可读介质上,计算机可读介质可以包括计算机存储介质(或非暂时性介质)和通信介质(或暂时性介质)。如本领域普通技术人员公知的,术语计算机存储介质包括在用于存储信息(诸如计算机可读指令、数据结构、程序模块或其他数据)的任何方法或技术中实施的易失性和非易失性、可移除和不可移除介质。计算机存储介质包括但不限于ram、rom、eeprom、闪存或其他存储器技术、cd-rom、数字多功能盘(dvd)或其他光盘存储、磁盒、磁带、磁盘存储或其他磁存储装置、或者可以用于存储期望的信息并且可以被计算机访问的任何其他的介质。此外,本领域普通技术人员公知的是,通信介质通常包含计算机可读指令、数据结构、程序模块或者诸如载波或其他传输机制之类的调制数据信号中的其他数据,并且可包括任何信息递送介质。

最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制。尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例的技术方案的精神和范围。

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