数据接口的自动生成方法、装置、计算机设备及存储介质转让专利

申请号 : CN202110214522.1

文献号 : CN112988132B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 杜均张茜凌海挺刘丽扬况利军

申请人 : 平安科技(深圳)有限公司

摘要 :

本发明公开了一种数据接口的自动生成方法,应用于计算机技术领域,用于解决目前自动生成数据接口的方式开发周期长、开发时效低的技术问题。该方法包括:接收到下游终端设备通过页面传入的携带有接口属性的接口请求时,将接口属性保存在预先配置的接口配置表的对应字段中;每间隔预设的时间段,对该接口配置表进行识别;当识别出该接口配置表的字段中新增有接口属性时,获取ByteBuddy框架中与该新增接口属性的字段相对应的预先编写的SQL语句;根据预先配置的接口属性与SQL语句中位置的映射关系,将该接口属性作为入参传入至预先编写的SQL语句中,得到与该接口请求相对应的数据接口;对该数据接口进行冒烟测试;测试通过时,将该数据接口发送至下游终端设备。

权利要求 :

1.一种数据接口的自动生成方法,其特征在于,所述方法包括:接收到下游终端设备通过页面传入的携带有接口属性的接口请求时,将所述接口属性保存在预先配置的接口配置表的对应字段中,所述接口属性包括所述数据接口的上线状态;

每间隔预设的时间段,对所述接口配置表进行识别;

当识别出所述接口配置表的字段中新增有所述接口属性时,获取ByteBuddy框架中与所述新增接口属性的字段相对应的预先编写的SQL语句;

根据预先配置的所述接口属性与所述SQL语句中位置的映射关系,将所述接口属性作为入参传入至所述预先编写的SQL语句中,得到与所述接口请求相对应的数据接口;

对所述数据接口进行冒烟测试;

当所述冒烟测试的测试结果通过时,将所述数据接口发送至所述下游终端设备;

所述对所述数据接口进行冒烟测试的步骤包括:识别所述数据接口的上线状态;

当所述数据接口的上线状态为立刻上线时,触发对所述数据接口进行冒烟测试。

2.根据权利要求1所述的数据接口的自动生成方法,其特征在于,所述接口属性包括接口名和URL地址,在所述获取ByteBuddy框架中与所述新增接口属性的字段相对应的预先编写的SQL语句的步骤之前,所述方法还包括:获取所述接口配置表的字段中存储的新增接口名和历史接口名;

判断所述历史接口名中是否存在有与所述新增接口名重名的历史接口名,若是则获取与所述新增接口名相对应的URL地址,获取与所述重名的历史接口名相对应的历史URL地址;

判断与所述新增接口名相对应的URL地址是否与所述历史URL地址相同,若是,则判断与所述接口请求相对应的数据接口请求失败。

3.根据权利要求1所述的数据接口的自动生成方法,其特征在于,所述接口属性包括用户ID,在所述获取ByteBuddy框架中与所述新增接口属性的字段相对应的预先编写的SQL语句的步骤之前,所述方法还包括:获取所述接口配置表的字段中存储的新增接口属性的用户ID;

将所述用户ID与黑名单中包含的用户ID进行比对,判断所述新增接口属性的用户ID是否包含在所述黑名单中;

当所述新增接口属性的用户ID包含在所述黑名单中时,判断与所述接口请求相对应的数据接口请求失败。

4.根据权利要求3所述的数据接口的自动生成方法,其特征在于,在所述判断与所述接口请求相对应的数据接口请求失败的步骤之后,所述方法还包括:从所述新增接口属性的字段中获取所述用户ID;

查询与所述用户ID对应存储的联系方式;

通过所述联系方式将所述数据接口请求失败的消息发送至对应的用户。

5.根据权利要求4所述的数据接口的自动生成方法,其特征在于,在所述查询与所述用户ID对应存储的联系方式的步骤之后,该方法还包括:通过所述联系方式将所述数据接口请求失败的原因发送至对应的用户。

6.根据权利要求1所述的数据接口的自动生成方法,其特征在于,所述接口属性包括是否缓存优先和所述数据接口需要访问的表名,所述将所述接口属性作为入参传入至所述预先编写的SQL语句中的步骤进一步包括:获取所述新增接口属性的字段中存储的是否缓存优先的取值;

当所述缓存优先的取值为是时,获取缓存中存储的与所述表名相对应的结果表的URL地址,并将所述缓存的URL地址作为入参传入至所述预先编写的SQL语句中;

当所述缓存优先的取值为否时,获取数据库中存储的与所述表名相对应的结果表的URL地址,并将所述数据库的URL地址作为入参传入至所述预先编写的SQL语句中。

7.一种数据接口的自动生成装置,其特征在于,所述装置包括:属性保存模块,用于接收到下游终端设备通过页面传入的携带有接口属性的接口请求时,将所述接口属性保存在预先配置的接口配置表的对应字段中,所述接口属性包括所述数据接口的上线状态;

配置表识别模块,用于每间隔预设的时间段,对所述接口配置表进行识别;

语句获取模块,用于当识别出所述接口配置表的字段中新增有所述接口属性时,获取ByteBuddy框架中与所述新增接口属性的字段相对应的预先编写的SQL语句;

传入模块,用于根据预先配置的所述接口属性与所述SQL语句中位置的映射关系,将所述接口属性作为入参传入至所述预先编写的SQL语句中,得到与所述接口请求相对应的数据接口;

测试模块,用于对所述数据接口进行冒烟测试;

接口发送模块,用于当所述冒烟测试的测试结果通过时,将所述数据接口发送至所述下游终端设备;

所述测试模块具体包括:

状态识别单元,用于识别所述数据接口的上线状态;

触发单元,用于当所述数据接口的上线状态为立刻上线时,触发对所述数据接口进行冒烟测试。

8.一种计算机设备,包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现如权利要求1至

6中任一项所述数据接口的自动生成方法的步骤。

9.一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求1至6中任一项所述数据接口的自动生成方法的步骤。

说明书 :

数据接口的自动生成方法、装置、计算机设备及存储介质

技术领域

[0001] 本发明涉及计算机技术领域,尤其涉及一种数据接口的自动生成方法、装置、计算机设备及存储介质。

背景技术

[0002] 随着信息化建设的不断发展,数据访问业务不断增多,数据查询的需求也越来越多。在实现数据访问的过程中,传统方式是根据固定的数据结构,由程序员通过编写sql语
句生成数据查询接口以实现数据访,这种方式带来的弊端是当数据结构发生变化或需要不
同的查询参数时,只能重新编写sql语句生成新的数据访问接口,带来极大的重复开发工作
量。
[0003] 为了降低程序员的代码开发工作量,有人提出了通过数据接口自动生成的方式来自动生成数据访问接口,以减少代码的重复开发,其实现原理是通过预先编写出若干个程
序模板,在需要生成数据访问的接口时,根据需求方需要的入参、出参、类型等匹配对应的
程序模块,然后将参数套入在程序模块中对应的位置,即可自动生成数据访问接口。
[0004] 目前这种自动生成数据接口的方式虽然可以避免代码的重复开发,但是通过模板自动生成的数据接口过于依赖模板本身的构成,使得自动生成的接口不够灵活,且通过模
板生成的数据接口在使用时要经过编译的过程,由于编译后的接口程序与该模板套用参数
的程序段是不同的,意味着需要对编译后实际运行的接口程序进行人工部署和测试,发明
人意识到通过模板自动生成的数据接口不管是编译、还是部署和测试,都需要走线上流程,
需要程序员人为地来触发,在接口测试验证上线生产时,开发周期长且开发时效低,不能快
速响应业务的需求。

发明内容

[0005] 本发明实施例提供一种数据接口的自动生成方法、装置、计算机设备及存储介质,以解决目前自动生成数据接口的方式开发周期长、开发时效低,不能快速响应业务的需求
的技术问题。
[0006] 一种数据接口的自动生成方法,该方法包括:
[0007] 接收到下游终端设备通过页面传入的携带有接口属性的接口请求时,将该接口属性保存在预先配置的接口配置表的对应字段中;
[0008] 每间隔预设的时间段,对该接口配置表进行识别;
[0009] 当识别出该接口配置表的字段中新增有该接口属性时,获取ByteBuddy框架中与该新增接口属性的字段相对应的预先编写的SQL语句;
[0010] 根据预先配置的该接口属性与该SQL语句中位置的映射关系,将该接口属性作为入参传入至该预先编写的SQL语句中,得到与该接口请求相对应的数据接口;
[0011] 对该数据接口进行冒烟测试;
[0012] 当该冒烟测试的测试结果通过时,将该数据接口发送至该下游终端设备。
[0013] 一种数据接口的自动生成装置,该装置包括:
[0014] 属性保存模块,用于接收到下游终端设备通过页面传入的携带有接口属性的接口请求时,将该接口属性保存在预先配置的接口配置表的对应字段中;
[0015] 配置表识别模块,用于每间隔预设的时间段,对该接口配置表进行识别;
[0016] 语句获取模块,用于当识别出该接口配置表的字段中新增有该接口属性时,获取ByteBuddy框架中与该新增接口属性的字段相对应的预先编写的SQL语句;
[0017] 传入模块,用于根据预先配置的该接口属性与该SQL语句中位置的映射关系,将该接口属性作为入参传入至该预先编写的SQL语句中,得到与该接口请求相对应的数据接口;
[0018] 测试模块,用于对该数据接口进行冒烟测试;
[0019] 接口发送模块,用于当该冒烟测试的测试结果通过时,将该数据接口发送至该下游终端设备。
[0020] 一种计算机设备,包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现上述数据接口的自动生成
方法的步骤。
[0021] 一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时实现上述数据接口的自动生成方法的步骤。
[0022] 本申请提出的数据接口的自动生成方法、装置、计算机设备及存储介质,利用ByteBuddy字节码增强框架在程序运行时,获取ByteBuddy框架中与所述新增接口属性的字
段相对应的预先编写的SQL语句,根据预先配置的接口属性与该SQL语句中位置的映射关
系,将所述接口属性作为入参传入至所述预先编写的SQL语句中,动态生成与所述接口请求
相对应的不需要编译的数据接口,利用在ByteBuddy字节码增强框架中的代码语句在运行
时不需要编译的特点,使得自动生成的数据接口在运行时源代码不会改变,省去了人工触
发编译的流程以及编译消耗的时间和资源,同时省去了通过传统方式生成自动的接口在走
线上流程时需要人工触发部署和测试的流程,通过本实施例生成的数据接口可以自动进行
冒烟测试,不需要人工去触发,缩短了程序开发周期,提升了接口的迭代速度,可以更快速
地响应业务的需求。

附图说明

[0023] 为了更清楚地说明本发明实施例的技术方案,下面将对本发明实施例的描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施
例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图
获得其他的附图。
[0024] 图1是本发明一实施例中数据接口的自动生成方法的一应用环境示意图;
[0025] 图2是本发明一实施例中数据接口的自动生成方法的一流程图;
[0026] 图3是本发明另一实施例中数据接口的自动生成方法的一流程图;
[0027] 图4是本发明实施例图2中步骤S104的具体实现流程图;
[0028] 图5是本发明一实施例中数据接口的自动生成装置的结构示意图;
[0029] 图6是本发明一实施例中计算机设备的一示意图。

具体实施方式

[0030] 下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发
明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施
例,都属于本发明保护的范围。
[0031] 本申请提供的数据接口的自动生成方法,可应用在如图1的应用环境中,其中,计算机设备包括但不限于各种个人计算机、笔记本电脑、智能手机、平板电脑和便携式可穿戴
设备。服务器可以用独立的服务器或者是多个服务器组成的服务器集群来实现。
[0032] 为了在减少代码的重复开发的基础上进一步缩短数据接口上线生产的开发周期,在一实施例中,如图2所示,提供一种数据接口的自动生成方法,以提高数据接口的开发时
效,以该方法应用在图1中的计算机设备为例进行说明,该数据接口的自动生成方法包括如
下步骤S101至S106。
[0033] S101、接收到下游终端设备通过页面传入的携带有接口属性的接口请求时,将所述接口属性保存在预先配置的接口配置表的对应字段中。
[0034] 在其中一个实施例中,该接口属性包括但不限于接口名、该数据接口需要访问的结果表的URL地址、访问的请求方式、该结果表的入参、出参的类型、用户ID等。
[0035] 在其中一个事实中,该访问的请求方式包括但不限于get、post等。出参的类型包括但不限于固定值、列表等,其中,该固定值可以是数值类型的固定值,也可以是字符类型
的固定值。
[0036] 其中,下游用户可以通过下游终端设备的用户界面输入该数据接口的接口属性,并通过点击页面上的提交按钮将携带有接口属性的接口请求发送至本端。
[0037] 可以理解的是,该接口配置表包括若干个字段,每个字段分别用于存储对应的接口属性。当接收到携带有接口属性的多条接口请求时,可以逐条将接口属性保存在预先配
置的接口配置表的对应字段中。
[0038] S102、每间隔预设的时间段,对所述接口配置表进行识别。
[0039] 在其中一个实施例中,该预设的时间段可以根据实际业务需求来设定,该预设的时间段例如5分钟。
[0040] S103、当识别出所述接口配置表的字段中新增有所述接口属性时,获取ByteBuddy框架中与所述新增接口属性的字段相对应的预先编写的SQL语句。
[0041] 可以理解的是,该预先编写的SQL语句与该接口配置表的字段一一对应,各SQL语句最终在ByteBuddy框架中合在一起的,实现接口功能。本实施例通过将接口配置表的字段
对应到ByteBuddy框架的SQL语句中,实现将自动生成的接口代码在该ByteBuddy框架中运
行,相比于现有实现手段中将接口请求与SQL模板进行匹配,本实施例提出的数据接口的自
动生成方法利用该ByteBuddy框架中的代码在运行时不需要编译的特点,使得生成的接口
的源代码与该接口的运行代码相同,使得接口请求中可携带的接口属性更加灵活,使得该
数据接口的自动生成方法能覆盖更多的应用场景和业务需求。
[0042] 图3是本发明另一实施例中数据接口的自动生成方法的一流程图,在其中一个实施例中,该接口属性包括接口名和URL地址,在所述获取ByteBuddy框架中与所述新增接口
属性的字段相对应的预先编写的SQL语句的步骤之前,如图所示,该方法还包括:
[0043] S301、获取所述接口配置表的字段中存储的新增接口名和历史接口名;
[0044] S302、判断所述历史接口名中是否存在有与所述新增接口名重名的历史接口名,若是则获取与所述新增接口名相对应的URL地址,获取与所述重名的历史接口名相对应的
历史URL地址;
[0045] S303、判断与所述新增接口名相对应的URL地址是否与所述历史URL地址相同,若是,则判断与所述接口请求相对应的数据接口请求失败。
[0046] 由于接口名和该数据接口需要访问的结果表的URL地址用于唯一标定一个数据接口,可以理解的是,当新增接口名和历史接口名重名,且新增接口名相对应的URL地址与重
名的历史接口的URL地址相同时,该接口名和对应的URL地址不再对该数据接口起到唯一标
定的作用。
[0047] 本实施例通过在获取ByteBuddy框架中与所述新增接口属性的字段相对应的预先编写的SQL语句,生成数据接口之前判断历史接口名中是否存在有与所述新增接口名重名
的历史接口名,可以避免生成相同的接口,避免在将所述数据接口发送至所述下游终端设
备时系统报错。
[0048] 在其中一个实施例中,所述接口属性包括用户ID,在该获取ByteBuddy框架中与所述新增接口属性的字段相对应的预先编写的SQL语句的步骤之前,该方法还包括:
[0049] 获取所述接口配置表的字段中存储的新增接口属性的用户ID;
[0050] 将所述用户ID与黑名单中包含的用户ID进行比对,判断所述新增接口属性的用户ID是否包含在所述黑名单中;
[0051] 当所述新增接口属性的用户ID包含在所述黑名单中时,判断与所述接口请求相对应的数据接口请求失败。
[0052] Byte Buddy是一个JVM(Java Virtual Machine,Java虚拟机)的运行时代码生成器,可以利用它创建任何类,ByteBuddy框架的缺点在于反射接口容易绕过出参类型的安全
检查,本实施例通过预先设置黑名单用户ID,在生成并返回该数据接口之前判断所述新增
接口属性的用户ID是否包含在所述黑名单中,若是,则直接判断与所述接口请求相对应的
数据接口请求失败,可以提高根据本实施例自动生成的数据接口的使用安全性。
[0053] 在其中一个实施例中,所述接口属性包括用户ID,在该判断与所述接口请求相对应的数据接口请求失败的步骤之后,该方法还包括:
[0054] 从所述新增接口属性的字段中获取用户ID;
[0055] 查询与所述用户ID对应存储的联系方式;
[0056] 通过所述联系方式将所述数据接口请求失败的消息发送至对应的用户。
[0057] 在其中一个实施例中,该用户ID包括但不限于该用户的工号、身份证号码等可以标定一个用户的ID号码。
[0058] 在其中一个实施例中,该联系方式包括但不限于邮箱和手机号码,可以通过向与所述用户ID对应存储的邮箱发送邮件的方式将所述数据接口请求失败的消息发送至对应
的用户知晓,也可以通过向与所述用户ID对应存储的手机号码发短信的方式将所述数据接
口请求失败的消息发送至对应的用户知晓。
[0059] 在其中一个实施例中,在该查询与所述用户ID对应存储的联系方式的步骤之后,该方法还包括:
[0060] 通过所述联系方式将所述数据接口请求失败的原因发送至对应的用户。
[0061] 可以理解的是,该数据接口请求失败的原因包括但不限于新增接口属性的用户ID为黑名单用户、该接口属性包括的接口名与历史接口名重名、已存在与接口请求相同的数
据接口等。
[0062] 本实施例通过将数据接口请求失败的消息及数据接口请求失败的原因发送至对应的用户,使得下游用户可以及时了解该数据接口生成的状态,使得下游用户可以根据具
体返回的数据接口请求失败的原因重新调整通过页面传入的携带有接口属性的接口请求,
重新请求该数据接口。
[0063] S104、根据预先配置的所述接口属性与所述SQL语句中位置的映射关系,将所述接口属性作为入参传入至所述预先编写的SQL语句中,得到与所述接口请求相对应的数据接
口。
[0064] 可以理解的是,在不同的SQL语句中,接口属性传入的位置不同,根据预先配置的所述接口属性与所述SQL语句中位置的映射关系,可以直接将该接口属性作为入参传入至
所述预先编写的SQL语句中,得到的所述接口请求相对应的数据接口是动态生成的,不需要
人工点击编译和人工部署,可以直接上线使用。
[0065] 图4是本发明实施例图2中步骤S104的具体实现流程图,在其中一个实施例中,该接口属性包括是否缓存优先和所述数据接口需要访问的表名,如图4所示,该将所述接口属
性作为入参传入至所述预先编写的SQL语句中的步骤进一步包括:
[0066] S401、获取所述新增接口属性的字段中存储的是否缓存优先的取值;
[0067] S402、当所述缓存优先的取值为是时,获取缓存中存储的与所述表名相对应的结果表的URL地址,并将所述缓存的URL地址作为入参传入至所述预先编写的SQL语句中;
[0068] S403、当所述缓存优先的取值为否时,获取数据库中存储的与所述表名相对应的结果表的URL地址,并将所述数据库的URL地址作为入参传入至所述预先编写的SQL语句中。
[0069] 本实施例通过在自动生成的数据接口中配置是否缓存优先,使得当下游用户需要通过缓存快速访问结果表中的数据时,可以自行通过在所述页面中传入是否缓存优先的接
口属性,对自动生成的数据接口进行设定,以满足通过本实施例自动生成的数据接口的功
能需求,提高该数据接口的适用范围。
[0070] S105、对所述数据接口进行冒烟测试。
[0071] 可以理解的是,冒烟测试表示在将代码更改嵌入到产品的源树之前对该数据接口进行验证的过程,冒烟测试是确定和修复软件缺陷的最经济有效的方法,冒烟测试用于确
认该数据接口会按预期运行,且不会破坏整个版本的稳定性。
[0072] 在其中一个实施例中,该接口属性包括所述数据接口的上线状态,对所述数据接口进行冒烟测试的步骤包括:
[0073] 识别所述数据接口的上线状态;
[0074] 当所述数据接口的上线状态为立刻上线时,触发对所述数据接口进行冒烟测试。
[0075] 在传统方法通过程序模板自动生成数据接口后,需要对自动生成的数据接口人工触发编译,并对编译后的数据接口人工触发冒烟测试。本实施例通过对数据接口的上线状
态进行识别,并在该数据接口的上线状态为立刻上线时,自动触发对所述数据接口进行冒
烟测试,省去了人工触发测试的流程,进一步缩短数据接口上线生产的开发周期。
[0076] 在其中一个实施例中,该接口属性包括所述数据接口需要访问的表名和入参,该对所述数据接口进行冒烟测试的步骤进一步包括:
[0077] 获取所述接口配置表的字段中存储的表名和入参;
[0078] 对获取的所述表名和入参进行拼接,得到查询语句;
[0079] 通过所述查询语句在所述表名对应的结果表中进行查询,并返回查询码;
[0080] 根据所述查询码判断冒烟测试是否测试成功。
[0081] 可以理解的是,该查询码携带有查询结果信息。在其中一个实施例中,可以预设与冒烟测试成功相对应的第一查询码和与冒烟测试失败相对应的第二查询码。
[0082] 进一步地,该根据所述查询码判断冒烟测试是否测试成功的步骤包括:
[0083] 当返回的所述查询码为第一查询码时,判断冒烟测试的测试结果为测试成功,当返回的所述查询码为第二查询码时,判断冒烟测试的测试结果为测试失败。
[0084] 在其中一个实施例中,在所述根据所述查询码判断冒烟测试是否测试成功的步骤之后,该方法还包括:
[0085] 当所述冒烟测试的测试结果为失败时,查询与所述用户ID相对应的联系方式;
[0086] 通过所述联系方式将冒烟测试的测试结果为失败的消息发送至对应的用户。
[0087] 在其中一个实施例中,该联系方式包括但不限于邮箱和手机号码,可以通过向与所述用户ID对应存储的邮箱发送邮件的方式将该冒烟测试的测试结果发送至对应的用户
知晓,也可以通过向与所述用户ID对应存储的手机号码发短信的方式将该冒烟测试的测试
结果发送至对应的用户知晓。
[0088] S106、当所述冒烟测试的测试结果通过时,将所述数据接口发送至所述下游终端设备。
[0089] 本实施例利用ByteBuddy字节码增强框架在程序运行时,获取ByteBuddy框架中与所述新增接口属性的字段相对应的预先编写的SQL语句,根据预先配置的接口属性与该SQL
语句中位置的映射关系,将所述接口属性作为入参传入至所述预先编写的SQL语句中,动态
生成与所述接口请求相对应的不需要编译的数据接口,自动生成的数据接口在运行时源代
码不会改变,省去了人工触发编译的流程以及编译消耗的时间和资源,同时省去了通过传
统方式生成自动的接口在走线上流程时需要人工触发部署和测试的流程,通过本实施例生
成的数据接口可以自动进行冒烟测试,不需要人工去触发,缩短了程序开发周期,提升了接
口的迭代速度,可以更快速地响应业务的需求。
[0090] 应理解,上述实施例中各步骤的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本发明实施例的实施过程构成任何限
定。
[0091] 在一实施例中,提供一种数据接口的自动生成装置,该数据接口的自动生成装置与上述实施例中数据接口的自动生成方法一一对应。如图5所示,该数据接口的自动生成装
置100包括属性保存模块11、配置表识别模块12、语句获取模块13、传入模块14、测试模块15
和接口发送模块16。各功能模块详细说明如下:
[0092] 属性保存模块11,用于接收到下游终端设备通过页面传入的携带有接口属性的接口请求时,将该接口属性保存在预先配置的接口配置表的对应字段中;
[0093] 配置表识别模块12,用于每间隔预设的时间段,对该接口配置表进行识别;
[0094] 语句获取模块13,用于当识别出该接口配置表的字段中新增有该接口属性时,获取ByteBuddy框架中与该新增接口属性的字段相对应的预先编写的SQL语句;
[0095] 传入模块14,用于根据预先配置的该接口属性与该SQL语句中位置的映射关系,将该接口属性作为入参传入至该预先编写的SQL语句中,得到与该接口请求相对应的数据接
口;
[0096] 测试模块15,用于对该数据接口进行冒烟测试;
[0097] 接口发送模块16,用于当该冒烟测试的测试结果通过时,将该数据接口发送至该下游终端设备。
[0098] 在其中一个实施例中,该接口属性包括但不限于接口名、该数据接口需要访问的结果表的URL地址、访问的请求方式、该结果表的入参、出参的类型、用户ID等。其中,该访问
的请求方式包括但不限于get、post等。出参的类型包括但不限于固定值、列表等,其中,该
固定值可以是数值类型的固定值,也可以是字符类型的固定值。
[0099] 进一步地,下游用户可以通过下游终端设备的用户界面输入该数据接口的接口属性,并通过点击页面上的提交按钮将携带有接口属性的接口请求发送至本端。
[0100] 可以理解的是,该接口配置表包括若干个字段,每个字段分别用于存储对应的接口属性。当接收到携带有接口属性的多条接口请求时,可以逐条将接口属性保存在预先配
置的接口配置表的对应字段中。
[0101] 在其中一个实施例中,该接口属性包括接口名和URL地址,该数据接口的自动生成装置100还包括:
[0102] 接口名获取模块,用于获取该接口配置表的字段中存储的新增接口名和历史接口名;
[0103] 第一判断模块,用于判断该历史接口名中是否存在有与该新增接口名重名的历史接口名,若是则获取与该新增接口名相对应的URL地址,获取与该重名的历史接口名相对应
的历史URL地址;
[0104] 第二判断模块,用于判断与该新增接口名相对应的URL地址是否与该历史URL地址相同,若是,则判断与该接口请求相对应的数据接口请求失败。
[0105] 由于接口名和该数据接口需要访问的结果表的URL地址用于唯一标定一个数据接口,可以理解的是,当新增接口名和历史接口名重名,且新增接口名相对应的URL地址与重
名的历史接口的URL地址相同时,该接口名和对应的URL地址不再对该数据接口起到唯一标
定的作用。
[0106] 本实施例通过在获取ByteBuddy框架中与所述新增接口属性的字段相对应的预先编写的SQL语句,生成数据接口之前判断历史接口名中是否存在有与所述新增接口名重名
的历史接口名,可以避免生成相同的接口,避免在将所述数据接口发送至所述下游终端设
备时系统报错。
[0107] 进一步地,该接口属性包括用户ID,该数据接口的自动生成装置100还包括:
[0108] 用户ID获取模块,用于获取该接口配置表的字段中存储的新增接口属性的用户ID;
[0109] 比对模块,用于将该用户ID与黑名单中包含的用户ID进行比对,判断该新增接口属性的用户ID是否包含在该黑名单中;
[0110] 第三判断模块,用于当该新增接口属性的用户ID包含在该黑名单中时,判断与该接口请求相对应的数据接口请求失败。
[0111] 本实施例通过预先设置黑名单用户ID,在生成并返回该数据接口之前判断所述新增接口属性的用户ID是否包含在所述黑名单中,若是,则直接判断与所述接口请求相对应
的数据接口请求失败,可以提高根据本实施例自动生成的数据接口的使用安全性。
[0112] 进一步地,该数据接口的自动生成装置100还包括:
[0113] 字段获取模块,用于从该新增接口属性的字段中获取该用户ID;
[0114] 查询模块,用于查询与该用户ID对应存储的联系方式;
[0115] 消息发送模块,用于通过该联系方式将该数据接口请求失败的消息发送至对应的用户。
[0116] 在其中一个实施例中,该用户ID包括但不限于该用户的工号、身份证号码等可以标定一个用户的ID号码。
[0117] 在其中一个实施例中,该联系方式包括但不限于邮箱和手机号码,可以通过向与所述用户ID对应存储的邮箱发送邮件的方式将所述数据接口请求失败的消息发送至对应
的用户知晓,也可以通过向与所述用户ID对应存储的手机号码发短信的方式将所述数据接
口请求失败的消息发送至对应的用户知晓。
[0118] 进一步地,该消息发送模块具体用于:通过该联系方式将该数据接口请求失败的原因发送至对应的用户。
[0119] 可以理解的是,该数据接口请求失败的原因包括但不限于新增接口属性的用户ID为黑名单用户、该接口属性包括的接口名与历史接口名重名、已存在与接口请求相同的数
据接口等。
[0120] 本实施例通过将数据接口请求失败的消息及数据接口请求失败的原因发送至对应的用户,使得下游用户可以及时了解该数据接口生成的状态,使得下游用户可以根据具
体返回的数据接口请求失败的原因重新调整通过页面传入的携带有接口属性的接口请求,
重新请求该数据接口。
[0121] 在其中一个实施例中,该接口属性包括是否缓存优先和该数据接口需要访问的表名,该传入模块14具体包括:
[0122] 取值获取单元,用于获取该新增接口属性的字段中存储的是否缓存优先的取值;
[0123] 第一入参传入单元,用于当该缓存优先的取值为是时,获取缓存中存储的与该表名相对应的结果表的URL地址,并将该缓存的URL地址作为入参传入至该预先编写的SQL语
句中;
[0124] 第二入参传入单元,用于当该缓存优先的取值为否时,获取数据库中存储的与该表名相对应的结果表的URL地址,并将该数据库的URL地址作为入参传入至该预先编写的
SQL语句中。
[0125] 本实施例通过在自动生成的数据接口中配置是否缓存优先,使得当下游用户需要通过缓存快速访问结果表中的数据时,可以自行通过在所述页面中传入是否缓存优先的接
口属性,对自动生成的数据接口进行设定,以满足通过本实施例自动生成的数据接口的功
能需求,提高该数据接口的适用范围。
[0126] 在其中一个实施例中,该接口属性包括该数据接口的上线状态,该测试模块15具体包括:
[0127] 状态识别单元,用于识别该数据接口的上线状态;
[0128] 触发单元,用于当该数据接口的上线状态为立刻上线时,触发对该数据接口进行冒烟测试。
[0129] 在传统方法通过程序模板自动生成数据接口后,需要对自动生成的数据接口人工触发编译,并对编译后的数据接口人工触发冒烟测试。本实施例通过对数据接口的上线状
态进行识别,并在该数据接口的上线状态为立刻上线时,自动触发对所述数据接口进行冒
烟测试,省去了人工触发测试的流程,进一步缩短数据接口上线生产的开发周期。
[0130] 在其中一个实施例中,该接口属性包括所述数据接口需要访问的表名和入参,该测试模块15还包括:
[0131] 表名获取单元,用于获取所述接口配置表的字段中存储的表名和入参;
[0132] 语句查询单元,用于对获取的所述表名和入参进行拼接,得到查询语句;
[0133] 查询码返回单元,用于通过所述查询语句在所述表名对应的结果表中进行查询,并返回查询码;
[0134] 判断单元,用于根据所述查询码判断冒烟测试是否测试成功。
[0135] 在其中一个实施例中,该判断单元具体用于当返回的所述查询码为第一查询码时,判断冒烟测试的测试结果为测试成功,当返回的所述查询码为第二查询码时,判断冒烟
测试的测试结果为测试失败。
[0136] 进一步地,该数据接口的自动生成装置100还包括:
[0137] 联系方式查询模块,用于当所述冒烟测试的测试结果为失败时,查询与所述用户ID相对应的联系方式;
[0138] 测试结果发送模块,用于通过所述联系方式将冒烟测试的测试结果为失败的消息发送至对应的用户。
[0139] 在其中一个实施例中,该联系方式包括但不限于邮箱和手机号码,可以通过向与所述用户ID对应存储的邮箱发送邮件的方式将该冒烟测试的测试结果发送至对应的用户
知晓,也可以通过向与所述用户ID对应存储的手机号码发短信的方式将该冒烟测试的测试
结果发送至对应的用户知晓。
[0140] 本实施例提出的数据接口的自动生成装置,利用ByteBuddy字节码增强框架在程序运行时,获取ByteBuddy框架中与所述新增接口属性的字段相对应的预先编写的SQL语
句,根据预先配置的接口属性与该SQL语句中位置的映射关系,将所述接口属性作为入参传
入至所述预先编写的SQL语句中,动态生成与所述接口请求相对应的不需要编译的数据接
口,自动生成的数据接口在运行时源代码不会改变,省去了人工触发编译的流程以及编译
消耗的时间和资源,同时省去了通过传统方式生成自动的接口在走线上流程时需要人工触
发部署和测试的流程,通过本实施例生成的数据接口可以自动进行冒烟测试,不需要人工
去触发,缩短了程序开发周期,提升了接口的迭代速度,可以更快速地响应业务的需求。
[0141] 其中上述模块/单元中的“第一”和“第二”的意义仅在于将不同的模块/单元加以区分,并不用于限定哪个模块/单元的优先级更高或者其它的限定意义。此外,术语“包括”
和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或模
块的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或模块,而是可包括没
有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或模块,本申请中所出
现的模块的划分,仅仅是一种逻辑上的划分,实际应用中实现时可以有另外的划分方式。
[0142] 关于数据接口的自动生成装置的具体限定可以参见上文中对于数据接口的自动生成方法的限定,在此不再赘述。上述数据接口的自动生成装置中的各个模块可全部或部
分通过软件、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于计算机设备
中的处理器中,也可以以软件形式存储于计算机设备中的存储器中,以便于处理器调用执
行以上各个模块对应的操作。
[0143] 在一个实施例中,提供了一种计算机设备,该计算机设备可以是终端,其内部结构图可以如图6所示。该计算机设备包括通过系统总线连接的处理器、存储器、网络接口、显示
屏和输入装置。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存
储器包括非易失性存储介质、内存储器。该非易失性存储介质存储有操作系统和计算机程
序。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该计算
机设备的网络接口用于与外部服务器通过网络连接通信。该计算机程序被处理器执行时以
实现一种数据接口的自动生成方法。
[0144] 在一个实施例中,提供了一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,处理器执行计算机程序时实现上述实施例中数据接口
的自动生成方法的步骤,例如图2所示的步骤101至步骤106及该方法的其它扩展和相关步
骤的延伸。或者,处理器执行计算机程序时实现上述实施例中数据接口的自动生成装置的
各模块/单元的功能,例如图5所示模块11至模块16的功能。为避免重复,这里不再赘述。
[0145] 所述处理器可以是中央处理单元(Central Processing Unit,CPU),还可以是其他通用处理器、数字信号处理器(Digital Signal Processor,DSP)、专用集成电路
(Application Specific Integrated Circuit,ASIC)、现成可编程门阵列(Field‑
Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、
分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器
等,所述处理器是所述计算机装置的控制中心,利用各种接口和线路连接整个计算机装置
的各个部分。
[0146] 所述存储器可用于存储所述计算机程序和/或模块,所述处理器通过运行或执行存储在所述存储器内的计算机程序和/或模块,以及调用存储在存储器内的数据,实现所述
计算机装置的各种功能。所述存储器可主要包括存储程序区和存储数据区,其中,存储程序
区可存储操作系统、至少一个功能所需的应用程序(比如声音播放功能、图像播放功能等)
等;存储数据区可存储根据手机的使用所创建的数据(比如音频数据、视频数据等)等。
[0147] 所述存储器可以集成在所述处理器中,也可以与所述处理器分开设置。
[0148] 在一个实施例中,提供了一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现上述实施例中数据接口的自动生成方法的步骤,例如图2所示
的步骤101至步骤106及该方法的其它扩展和相关步骤的延伸。或者,计算机程序被处理器
执行时实现上述实施例中数据接口的自动生成装置的各模块/单元的功能,例如图5所示模
块11至模块16的功能。为避免重复,这里不再赘述。
[0149] 本申请提出的数据接口的自动生成方法、装置、计算机设备及存储介质,通过动态生成与所述接口请求相对应的不需要编译的数据接口,自动生成的数据接口在运行时源代
码不会改变,省去了人工触发编译的流程以及编译消耗的时间和资源,同时省去了通过传
统方式生成自动的接口在走线上流程时需要人工触发部署和测试的流程,通过本实施例生
成的数据接口可以自动进行冒烟测试,不需要人工去触发,缩短了程序开发周期,提升了接
口的迭代速度,可以更快速地响应业务的需求。
[0150] 本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一非易失性计算机
可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,
本申请所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可
包括非易失性和/或易失性存储器。非易失性存储器可包括只读存储器(ROM)、可编程ROM
(PROM)、电可编程ROM(EPROM)、电可擦除可编程ROM(EEPROM)或闪存。易失性存储器可包括
随机存取存储器(RAM)或者外部高速缓冲存储器。作为说明而非局限,RAM以多种形式可得,
诸如静态RAM(SRAM)、动态RAM(DRAM)、同步DRAM(SDRAM)、双数据率SDRAM(DDRSDRAM)、增强
型SDRAM(ESDRAM)、同步链路(Synchlink)DRAM(SLDRAM)、存储器总线(Rambus)直接RAM
(RDRAM)、直接存储器总线动态RAM(DRDRAM)、以及存储器总线动态RAM(RDRAM)等。
[0151] 所属领域的技术人员可以清楚地了解到,为了描述的方便和简洁,仅以上述各功能单元、模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的
功能单元、模块完成,即将所述装置的内部结构划分成不同的功能单元或模块,以完成以上
描述的全部或者部分功能。
[0152] 以上所述实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各
实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改
或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围,均应
包含在本发明的保护范围之内。