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

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

Info

Publication number
CN112988132A
CN112988132A CN202110214522.1A CN202110214522A CN112988132A CN 112988132 A CN112988132 A CN 112988132A CN 202110214522 A CN202110214522 A CN 202110214522A CN 112988132 A CN112988132 A CN 112988132A
Authority
CN
China
Prior art keywords
interface
attribute
data interface
data
name
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.)
Granted
Application number
CN202110214522.1A
Other languages
English (en)
Other versions
CN112988132B (zh
Inventor
杜均
张茜
凌海挺
刘丽扬
况利军
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Ping An Technology Shenzhen Co Ltd
Original Assignee
Ping An Technology Shenzhen Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Ping An Technology Shenzhen Co Ltd filed Critical Ping An Technology Shenzhen Co Ltd
Priority to CN202110214522.1A priority Critical patent/CN112988132B/zh
Publication of CN112988132A publication Critical patent/CN112988132A/zh
Application granted granted Critical
Publication of CN112988132B publication Critical patent/CN112988132B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • G06F8/31Programming languages or programming paradigms
    • G06F8/313Logic programming, e.g. PROLOG programming language
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3668Software testing
    • G06F11/3672Test management
    • G06F11/3684Test management for test design, e.g. generating new test cases
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/242Query formulation
    • G06F16/2433Query languages

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computing Systems (AREA)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • Mathematical Physics (AREA)
  • Computational Linguistics (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

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

Description

数据接口的自动生成方法、装置、计算机设备及存储介质
技术领域
本发明涉及计算机技术领域,尤其涉及一种数据接口的自动生成方法、装置、计算机设备及存储介质。
背景技术
随着信息化建设的不断发展,数据访问业务不断增多,数据查询的需求也越来越多。在实现数据访问的过程中,传统方式是根据固定的数据结构,由程序员通过编写sql语句生成数据查询接口以实现数据访,这种方式带来的弊端是当数据结构发生变化或需要不同的查询参数时,只能重新编写sql语句生成新的数据访问接口,带来极大的重复开发工作量。
为了降低程序员的代码开发工作量,有人提出了通过数据接口自动生成的方式来自动生成数据访问接口,以减少代码的重复开发,其实现原理是通过预先编写出若干个程序模板,在需要生成数据访问的接口时,根据需求方需要的入参、出参、类型等匹配对应的程序模块,然后将参数套入在程序模块中对应的位置,即可自动生成数据访问接口。
目前这种自动生成数据接口的方式虽然可以避免代码的重复开发,但是通过模板自动生成的数据接口过于依赖模板本身的构成,使得自动生成的接口不够灵活,且通过模板生成的数据接口在使用时要经过编译的过程,由于编译后的接口程序与该模板套用参数的程序段是不同的,意味着需要对编译后实际运行的接口程序进行人工部署和测试,发明人意识到通过模板自动生成的数据接口不管是编译、还是部署和测试,都需要走线上流程,需要程序员人为地来触发,在接口测试验证上线生产时,开发周期长且开发时效低,不能快速响应业务的需求。
发明内容
本发明实施例提供一种数据接口的自动生成方法、装置、计算机设备及存储介质,以解决目前自动生成数据接口的方式开发周期长、开发时效低,不能快速响应业务的需求的技术问题。
一种数据接口的自动生成方法,该方法包括:
接收到下游终端设备通过页面传入的携带有接口属性的接口请求时,将该接口属性保存在预先配置的接口配置表的对应字段中;
每间隔预设的时间段,对该接口配置表进行识别;
当识别出该接口配置表的字段中新增有该接口属性时,获取ByteBuddy框架中与该新增接口属性的字段相对应的预先编写的SQL语句;
根据预先配置的该接口属性与该SQL语句中位置的映射关系,将该接口属性作为入参传入至该预先编写的SQL语句中,得到与该接口请求相对应的数据接口;
对该数据接口进行冒烟测试;
当该冒烟测试的测试结果通过时,将该数据接口发送至该下游终端设备。
一种数据接口的自动生成装置,该装置包括:
属性保存模块,用于接收到下游终端设备通过页面传入的携带有接口属性的接口请求时,将该接口属性保存在预先配置的接口配置表的对应字段中;
配置表识别模块,用于每间隔预设的时间段,对该接口配置表进行识别;
语句获取模块,用于当识别出该接口配置表的字段中新增有该接口属性时,获取ByteBuddy框架中与该新增接口属性的字段相对应的预先编写的SQL语句;
传入模块,用于根据预先配置的该接口属性与该SQL语句中位置的映射关系,将该接口属性作为入参传入至该预先编写的SQL语句中,得到与该接口请求相对应的数据接口;
测试模块,用于对该数据接口进行冒烟测试;
接口发送模块,用于当该冒烟测试的测试结果通过时,将该数据接口发送至该下游终端设备。
一种计算机设备,包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现上述数据接口的自动生成方法的步骤。
一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时实现上述数据接口的自动生成方法的步骤。
本申请提出的数据接口的自动生成方法、装置、计算机设备及存储介质,利用ByteBuddy字节码增强框架在程序运行时,获取ByteBuddy框架中与所述新增接口属性的字段相对应的预先编写的SQL语句,根据预先配置的接口属性与该SQL语句中位置的映射关系,将所述接口属性作为入参传入至所述预先编写的SQL语句中,动态生成与所述接口请求相对应的不需要编译的数据接口,利用在ByteBuddy字节码增强框架中的代码语句在运行时不需要编译的特点,使得自动生成的数据接口在运行时源代码不会改变,省去了人工触发编译的流程以及编译消耗的时间和资源,同时省去了通过传统方式生成自动的接口在走线上流程时需要人工触发部署和测试的流程,通过本实施例生成的数据接口可以自动进行冒烟测试,不需要人工去触发,缩短了程序开发周期,提升了接口的迭代速度,可以更快速地响应业务的需求。
附图说明
为了更清楚地说明本发明实施例的技术方案,下面将对本发明实施例的描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1是本发明一实施例中数据接口的自动生成方法的一应用环境示意图;
图2是本发明一实施例中数据接口的自动生成方法的一流程图;
图3是本发明另一实施例中数据接口的自动生成方法的一流程图;
图4是本发明实施例图2中步骤S104的具体实现流程图;
图5是本发明一实施例中数据接口的自动生成装置的结构示意图;
图6是本发明一实施例中计算机设备的一示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本申请提供的数据接口的自动生成方法,可应用在如图1的应用环境中,其中,计算机设备包括但不限于各种个人计算机、笔记本电脑、智能手机、平板电脑和便携式可穿戴设备。服务器可以用独立的服务器或者是多个服务器组成的服务器集群来实现。
为了在减少代码的重复开发的基础上进一步缩短数据接口上线生产的开发周期,在一实施例中,如图2所示,提供一种数据接口的自动生成方法,以提高数据接口的开发时效,以该方法应用在图1中的计算机设备为例进行说明,该数据接口的自动生成方法包括如下步骤S101至S106。
S101、接收到下游终端设备通过页面传入的携带有接口属性的接口请求时,将所述接口属性保存在预先配置的接口配置表的对应字段中。
在其中一个实施例中,该接口属性包括但不限于接口名、该数据接口需要访问的结果表的URL地址、访问的请求方式、该结果表的入参、出参的类型、用户ID等。
在其中一个事实中,该访问的请求方式包括但不限于get、post等。出参的类型包括但不限于固定值、列表等,其中,该固定值可以是数值类型的固定值,也可以是字符类型的固定值。
其中,下游用户可以通过下游终端设备的用户界面输入该数据接口的接口属性,并通过点击页面上的提交按钮将携带有接口属性的接口请求发送至本端。
可以理解的是,该接口配置表包括若干个字段,每个字段分别用于存储对应的接口属性。当接收到携带有接口属性的多条接口请求时,可以逐条将接口属性保存在预先配置的接口配置表的对应字段中。
S102、每间隔预设的时间段,对所述接口配置表进行识别。
在其中一个实施例中,该预设的时间段可以根据实际业务需求来设定,该预设的时间段例如5分钟。
S103、当识别出所述接口配置表的字段中新增有所述接口属性时,获取ByteBuddy框架中与所述新增接口属性的字段相对应的预先编写的SQL语句。
可以理解的是,该预先编写的SQL语句与该接口配置表的字段一一对应,各SQL语句最终在ByteBuddy框架中合在一起的,实现接口功能。本实施例通过将接口配置表的字段对应到ByteBuddy框架的SQL语句中,实现将自动生成的接口代码在该ByteBuddy框架中运行,相比于现有实现手段中将接口请求与SQL模板进行匹配,本实施例提出的数据接口的自动生成方法利用该ByteBuddy框架中的代码在运行时不需要编译的特点,使得生成的接口的源代码与该接口的运行代码相同,使得接口请求中可携带的接口属性更加灵活,使得该数据接口的自动生成方法能覆盖更多的应用场景和业务需求。
图3是本发明另一实施例中数据接口的自动生成方法的一流程图,在其中一个实施例中,该接口属性包括接口名和URL地址,在所述获取ByteBuddy框架中与所述新增接口属性的字段相对应的预先编写的SQL语句的步骤之前,如图所示,该方法还包括:
S301、获取所述接口配置表的字段中存储的新增接口名和历史接口名;
S302、判断所述历史接口名中是否存在有与所述新增接口名重名的历史接口名,若是则获取与所述新增接口名相对应的URL地址,获取与所述重名的历史接口名相对应的历史URL地址;
S303、判断与所述新增接口名相对应的URL地址是否与所述历史URL地址相同,若是,则判断与所述接口请求相对应的数据接口请求失败。
由于接口名和该数据接口需要访问的结果表的URL地址用于唯一标定一个数据接口,可以理解的是,当新增接口名和历史接口名重名,且新增接口名相对应的URL地址与重名的历史接口的URL地址相同时,该接口名和对应的URL地址不再对该数据接口起到唯一标定的作用。
本实施例通过在获取ByteBuddy框架中与所述新增接口属性的字段相对应的预先编写的SQL语句,生成数据接口之前判断历史接口名中是否存在有与所述新增接口名重名的历史接口名,可以避免生成相同的接口,避免在将所述数据接口发送至所述下游终端设备时系统报错。
在其中一个实施例中,所述接口属性包括用户ID,在该获取ByteBuddy框架中与所述新增接口属性的字段相对应的预先编写的SQL语句的步骤之前,该方法还包括:
获取所述接口配置表的字段中存储的新增接口属性的用户ID;
将所述用户ID与黑名单中包含的用户ID进行比对,判断所述新增接口属性的用户ID是否包含在所述黑名单中;
当所述新增接口属性的用户ID包含在所述黑名单中时,判断与所述接口请求相对应的数据接口请求失败。
Byte Buddy是一个JVM(Java Virtual Machine,Java虚拟机)的运行时代码生成器,可以利用它创建任何类,ByteBuddy框架的缺点在于反射接口容易绕过出参类型的安全检查,本实施例通过预先设置黑名单用户ID,在生成并返回该数据接口之前判断所述新增接口属性的用户ID是否包含在所述黑名单中,若是,则直接判断与所述接口请求相对应的数据接口请求失败,可以提高根据本实施例自动生成的数据接口的使用安全性。
在其中一个实施例中,所述接口属性包括用户ID,在该判断与所述接口请求相对应的数据接口请求失败的步骤之后,该方法还包括:
从所述新增接口属性的字段中获取用户ID;
查询与所述用户ID对应存储的联系方式;
通过所述联系方式将所述数据接口请求失败的消息发送至对应的用户。
在其中一个实施例中,该用户ID包括但不限于该用户的工号、身份证号码等可以标定一个用户的ID号码。
在其中一个实施例中,该联系方式包括但不限于邮箱和手机号码,可以通过向与所述用户ID对应存储的邮箱发送邮件的方式将所述数据接口请求失败的消息发送至对应的用户知晓,也可以通过向与所述用户ID对应存储的手机号码发短信的方式将所述数据接口请求失败的消息发送至对应的用户知晓。
在其中一个实施例中,在该查询与所述用户ID对应存储的联系方式的步骤之后,该方法还包括:
通过所述联系方式将所述数据接口请求失败的原因发送至对应的用户。
可以理解的是,该数据接口请求失败的原因包括但不限于新增接口属性的用户ID为黑名单用户、该接口属性包括的接口名与历史接口名重名、已存在与接口请求相同的数据接口等。
本实施例通过将数据接口请求失败的消息及数据接口请求失败的原因发送至对应的用户,使得下游用户可以及时了解该数据接口生成的状态,使得下游用户可以根据具体返回的数据接口请求失败的原因重新调整通过页面传入的携带有接口属性的接口请求,重新请求该数据接口。
S104、根据预先配置的所述接口属性与所述SQL语句中位置的映射关系,将所述接口属性作为入参传入至所述预先编写的SQL语句中,得到与所述接口请求相对应的数据接口。
可以理解的是,在不同的SQL语句中,接口属性传入的位置不同,根据预先配置的所述接口属性与所述SQL语句中位置的映射关系,可以直接将该接口属性作为入参传入至所述预先编写的SQL语句中,得到的所述接口请求相对应的数据接口是动态生成的,不需要人工点击编译和人工部署,可以直接上线使用。
图4是本发明实施例图2中步骤S104的具体实现流程图,在其中一个实施例中,该接口属性包括是否缓存优先和所述数据接口需要访问的表名,如图4所示,该将所述接口属性作为入参传入至所述预先编写的SQL语句中的步骤进一步包括:
S401、获取所述新增接口属性的字段中存储的是否缓存优先的取值;
S402、当所述缓存优先的取值为是时,获取缓存中存储的与所述表名相对应的结果表的URL地址,并将所述缓存的URL地址作为入参传入至所述预先编写的SQL语句中;
S403、当所述缓存优先的取值为否时,获取数据库中存储的与所述表名相对应的结果表的URL地址,并将所述数据库的URL地址作为入参传入至所述预先编写的SQL语句中。
本实施例通过在自动生成的数据接口中配置是否缓存优先,使得当下游用户需要通过缓存快速访问结果表中的数据时,可以自行通过在所述页面中传入是否缓存优先的接口属性,对自动生成的数据接口进行设定,以满足通过本实施例自动生成的数据接口的功能需求,提高该数据接口的适用范围。
S105、对所述数据接口进行冒烟测试。
可以理解的是,冒烟测试表示在将代码更改嵌入到产品的源树之前对该数据接口进行验证的过程,冒烟测试是确定和修复软件缺陷的最经济有效的方法,冒烟测试用于确认该数据接口会按预期运行,且不会破坏整个版本的稳定性。
在其中一个实施例中,该接口属性包括所述数据接口的上线状态,对所述数据接口进行冒烟测试的步骤包括:
识别所述数据接口的上线状态;
当所述数据接口的上线状态为立刻上线时,触发对所述数据接口进行冒烟测试。
在传统方法通过程序模板自动生成数据接口后,需要对自动生成的数据接口人工触发编译,并对编译后的数据接口人工触发冒烟测试。本实施例通过对数据接口的上线状态进行识别,并在该数据接口的上线状态为立刻上线时,自动触发对所述数据接口进行冒烟测试,省去了人工触发测试的流程,进一步缩短数据接口上线生产的开发周期。
在其中一个实施例中,该接口属性包括所述数据接口需要访问的表名和入参,该对所述数据接口进行冒烟测试的步骤进一步包括:
获取所述接口配置表的字段中存储的表名和入参;
对获取的所述表名和入参进行拼接,得到查询语句;
通过所述查询语句在所述表名对应的结果表中进行查询,并返回查询码;
根据所述查询码判断冒烟测试是否测试成功。
可以理解的是,该查询码携带有查询结果信息。在其中一个实施例中,可以预设与冒烟测试成功相对应的第一查询码和与冒烟测试失败相对应的第二查询码。
进一步地,该根据所述查询码判断冒烟测试是否测试成功的步骤包括:
当返回的所述查询码为第一查询码时,判断冒烟测试的测试结果为测试成功,当返回的所述查询码为第二查询码时,判断冒烟测试的测试结果为测试失败。
在其中一个实施例中,在所述根据所述查询码判断冒烟测试是否测试成功的步骤之后,该方法还包括:
当所述冒烟测试的测试结果为失败时,查询与所述用户ID相对应的联系方式;
通过所述联系方式将冒烟测试的测试结果为失败的消息发送至对应的用户。
在其中一个实施例中,该联系方式包括但不限于邮箱和手机号码,可以通过向与所述用户ID对应存储的邮箱发送邮件的方式将该冒烟测试的测试结果发送至对应的用户知晓,也可以通过向与所述用户ID对应存储的手机号码发短信的方式将该冒烟测试的测试结果发送至对应的用户知晓。
S106、当所述冒烟测试的测试结果通过时,将所述数据接口发送至所述下游终端设备。
本实施例利用ByteBuddy字节码增强框架在程序运行时,获取ByteBuddy框架中与所述新增接口属性的字段相对应的预先编写的SQL语句,根据预先配置的接口属性与该SQL语句中位置的映射关系,将所述接口属性作为入参传入至所述预先编写的SQL语句中,动态生成与所述接口请求相对应的不需要编译的数据接口,自动生成的数据接口在运行时源代码不会改变,省去了人工触发编译的流程以及编译消耗的时间和资源,同时省去了通过传统方式生成自动的接口在走线上流程时需要人工触发部署和测试的流程,通过本实施例生成的数据接口可以自动进行冒烟测试,不需要人工去触发,缩短了程序开发周期,提升了接口的迭代速度,可以更快速地响应业务的需求。
应理解,上述实施例中各步骤的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本发明实施例的实施过程构成任何限定。
在一实施例中,提供一种数据接口的自动生成装置,该数据接口的自动生成装置与上述实施例中数据接口的自动生成方法一一对应。如图5所示,该数据接口的自动生成装置100包括属性保存模块11、配置表识别模块12、语句获取模块13、传入模块14、测试模块15和接口发送模块16。各功能模块详细说明如下:
属性保存模块11,用于接收到下游终端设备通过页面传入的携带有接口属性的接口请求时,将该接口属性保存在预先配置的接口配置表的对应字段中;
配置表识别模块12,用于每间隔预设的时间段,对该接口配置表进行识别;
语句获取模块13,用于当识别出该接口配置表的字段中新增有该接口属性时,获取ByteBuddy框架中与该新增接口属性的字段相对应的预先编写的SQL语句;
传入模块14,用于根据预先配置的该接口属性与该SQL语句中位置的映射关系,将该接口属性作为入参传入至该预先编写的SQL语句中,得到与该接口请求相对应的数据接口;
测试模块15,用于对该数据接口进行冒烟测试;
接口发送模块16,用于当该冒烟测试的测试结果通过时,将该数据接口发送至该下游终端设备。
在其中一个实施例中,该接口属性包括但不限于接口名、该数据接口需要访问的结果表的URL地址、访问的请求方式、该结果表的入参、出参的类型、用户ID等。其中,该访问的请求方式包括但不限于get、post等。出参的类型包括但不限于固定值、列表等,其中,该固定值可以是数值类型的固定值,也可以是字符类型的固定值。
进一步地,下游用户可以通过下游终端设备的用户界面输入该数据接口的接口属性,并通过点击页面上的提交按钮将携带有接口属性的接口请求发送至本端。
可以理解的是,该接口配置表包括若干个字段,每个字段分别用于存储对应的接口属性。当接收到携带有接口属性的多条接口请求时,可以逐条将接口属性保存在预先配置的接口配置表的对应字段中。
在其中一个实施例中,该接口属性包括接口名和URL地址,该数据接口的自动生成装置100还包括:
接口名获取模块,用于获取该接口配置表的字段中存储的新增接口名和历史接口名;
第一判断模块,用于判断该历史接口名中是否存在有与该新增接口名重名的历史接口名,若是则获取与该新增接口名相对应的URL地址,获取与该重名的历史接口名相对应的历史URL地址;
第二判断模块,用于判断与该新增接口名相对应的URL地址是否与该历史URL地址相同,若是,则判断与该接口请求相对应的数据接口请求失败。
由于接口名和该数据接口需要访问的结果表的URL地址用于唯一标定一个数据接口,可以理解的是,当新增接口名和历史接口名重名,且新增接口名相对应的URL地址与重名的历史接口的URL地址相同时,该接口名和对应的URL地址不再对该数据接口起到唯一标定的作用。
本实施例通过在获取ByteBuddy框架中与所述新增接口属性的字段相对应的预先编写的SQL语句,生成数据接口之前判断历史接口名中是否存在有与所述新增接口名重名的历史接口名,可以避免生成相同的接口,避免在将所述数据接口发送至所述下游终端设备时系统报错。
进一步地,该接口属性包括用户ID,该数据接口的自动生成装置100还包括:
用户ID获取模块,用于获取该接口配置表的字段中存储的新增接口属性的用户ID;
比对模块,用于将该用户ID与黑名单中包含的用户ID进行比对,判断该新增接口属性的用户ID是否包含在该黑名单中;
第三判断模块,用于当该新增接口属性的用户ID包含在该黑名单中时,判断与该接口请求相对应的数据接口请求失败。
本实施例通过预先设置黑名单用户ID,在生成并返回该数据接口之前判断所述新增接口属性的用户ID是否包含在所述黑名单中,若是,则直接判断与所述接口请求相对应的数据接口请求失败,可以提高根据本实施例自动生成的数据接口的使用安全性。
进一步地,该数据接口的自动生成装置100还包括:
字段获取模块,用于从该新增接口属性的字段中获取该用户ID;
查询模块,用于查询与该用户ID对应存储的联系方式;
消息发送模块,用于通过该联系方式将该数据接口请求失败的消息发送至对应的用户。
在其中一个实施例中,该用户ID包括但不限于该用户的工号、身份证号码等可以标定一个用户的ID号码。
在其中一个实施例中,该联系方式包括但不限于邮箱和手机号码,可以通过向与所述用户ID对应存储的邮箱发送邮件的方式将所述数据接口请求失败的消息发送至对应的用户知晓,也可以通过向与所述用户ID对应存储的手机号码发短信的方式将所述数据接口请求失败的消息发送至对应的用户知晓。
进一步地,该消息发送模块具体用于:通过该联系方式将该数据接口请求失败的原因发送至对应的用户。
可以理解的是,该数据接口请求失败的原因包括但不限于新增接口属性的用户ID为黑名单用户、该接口属性包括的接口名与历史接口名重名、已存在与接口请求相同的数据接口等。
本实施例通过将数据接口请求失败的消息及数据接口请求失败的原因发送至对应的用户,使得下游用户可以及时了解该数据接口生成的状态,使得下游用户可以根据具体返回的数据接口请求失败的原因重新调整通过页面传入的携带有接口属性的接口请求,重新请求该数据接口。
在其中一个实施例中,该接口属性包括是否缓存优先和该数据接口需要访问的表名,该传入模块14具体包括:
取值获取单元,用于获取该新增接口属性的字段中存储的是否缓存优先的取值;
第一入参传入单元,用于当该缓存优先的取值为是时,获取缓存中存储的与该表名相对应的结果表的URL地址,并将该缓存的URL地址作为入参传入至该预先编写的SQL语句中;
第二入参传入单元,用于当该缓存优先的取值为否时,获取数据库中存储的与该表名相对应的结果表的URL地址,并将该数据库的URL地址作为入参传入至该预先编写的SQL语句中。
本实施例通过在自动生成的数据接口中配置是否缓存优先,使得当下游用户需要通过缓存快速访问结果表中的数据时,可以自行通过在所述页面中传入是否缓存优先的接口属性,对自动生成的数据接口进行设定,以满足通过本实施例自动生成的数据接口的功能需求,提高该数据接口的适用范围。
在其中一个实施例中,该接口属性包括该数据接口的上线状态,该测试模块15具体包括:
状态识别单元,用于识别该数据接口的上线状态;
触发单元,用于当该数据接口的上线状态为立刻上线时,触发对该数据接口进行冒烟测试。
在传统方法通过程序模板自动生成数据接口后,需要对自动生成的数据接口人工触发编译,并对编译后的数据接口人工触发冒烟测试。本实施例通过对数据接口的上线状态进行识别,并在该数据接口的上线状态为立刻上线时,自动触发对所述数据接口进行冒烟测试,省去了人工触发测试的流程,进一步缩短数据接口上线生产的开发周期。
在其中一个实施例中,该接口属性包括所述数据接口需要访问的表名和入参,该测试模块15还包括:
表名获取单元,用于获取所述接口配置表的字段中存储的表名和入参;
语句查询单元,用于对获取的所述表名和入参进行拼接,得到查询语句;
查询码返回单元,用于通过所述查询语句在所述表名对应的结果表中进行查询,并返回查询码;
判断单元,用于根据所述查询码判断冒烟测试是否测试成功。
在其中一个实施例中,该判断单元具体用于当返回的所述查询码为第一查询码时,判断冒烟测试的测试结果为测试成功,当返回的所述查询码为第二查询码时,判断冒烟测试的测试结果为测试失败。
进一步地,该数据接口的自动生成装置100还包括:
联系方式查询模块,用于当所述冒烟测试的测试结果为失败时,查询与所述用户ID相对应的联系方式;
测试结果发送模块,用于通过所述联系方式将冒烟测试的测试结果为失败的消息发送至对应的用户。
在其中一个实施例中,该联系方式包括但不限于邮箱和手机号码,可以通过向与所述用户ID对应存储的邮箱发送邮件的方式将该冒烟测试的测试结果发送至对应的用户知晓,也可以通过向与所述用户ID对应存储的手机号码发短信的方式将该冒烟测试的测试结果发送至对应的用户知晓。
本实施例提出的数据接口的自动生成装置,利用ByteBuddy字节码增强框架在程序运行时,获取ByteBuddy框架中与所述新增接口属性的字段相对应的预先编写的SQL语句,根据预先配置的接口属性与该SQL语句中位置的映射关系,将所述接口属性作为入参传入至所述预先编写的SQL语句中,动态生成与所述接口请求相对应的不需要编译的数据接口,自动生成的数据接口在运行时源代码不会改变,省去了人工触发编译的流程以及编译消耗的时间和资源,同时省去了通过传统方式生成自动的接口在走线上流程时需要人工触发部署和测试的流程,通过本实施例生成的数据接口可以自动进行冒烟测试,不需要人工去触发,缩短了程序开发周期,提升了接口的迭代速度,可以更快速地响应业务的需求。
其中上述模块/单元中的“第一”和“第二”的意义仅在于将不同的模块/单元加以区分,并不用于限定哪个模块/单元的优先级更高或者其它的限定意义。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或模块的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或模块,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或模块,本申请中所出现的模块的划分,仅仅是一种逻辑上的划分,实际应用中实现时可以有另外的划分方式。
关于数据接口的自动生成装置的具体限定可以参见上文中对于数据接口的自动生成方法的限定,在此不再赘述。上述数据接口的自动生成装置中的各个模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于计算机设备中的处理器中,也可以以软件形式存储于计算机设备中的存储器中,以便于处理器调用执行以上各个模块对应的操作。
在一个实施例中,提供了一种计算机设备,该计算机设备可以是终端,其内部结构图可以如图6所示。该计算机设备包括通过系统总线连接的处理器、存储器、网络接口、显示屏和输入装置。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质、内存储器。该非易失性存储介质存储有操作系统和计算机程序。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该计算机设备的网络接口用于与外部服务器通过网络连接通信。该计算机程序被处理器执行时以实现一种数据接口的自动生成方法。
在一个实施例中,提供了一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,处理器执行计算机程序时实现上述实施例中数据接口的自动生成方法的步骤,例如图2所示的步骤101至步骤106及该方法的其它扩展和相关步骤的延伸。或者,处理器执行计算机程序时实现上述实施例中数据接口的自动生成装置的各模块/单元的功能,例如图5所示模块11至模块16的功能。为避免重复,这里不再赘述。
所述处理器可以是中央处理单元(Central Processing Unit,CPU),还可以是其他通用处理器、数字信号处理器(Digital Signal Processor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现成可编程门阵列(Field-Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等,所述处理器是所述计算机装置的控制中心,利用各种接口和线路连接整个计算机装置的各个部分。
所述存储器可用于存储所述计算机程序和/或模块,所述处理器通过运行或执行存储在所述存储器内的计算机程序和/或模块,以及调用存储在存储器内的数据,实现所述计算机装置的各种功能。所述存储器可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序(比如声音播放功能、图像播放功能等)等;存储数据区可存储根据手机的使用所创建的数据(比如音频数据、视频数据等)等。
所述存储器可以集成在所述处理器中,也可以与所述处理器分开设置。
在一个实施例中,提供了一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现上述实施例中数据接口的自动生成方法的步骤,例如图2所示的步骤101至步骤106及该方法的其它扩展和相关步骤的延伸。或者,计算机程序被处理器执行时实现上述实施例中数据接口的自动生成装置的各模块/单元的功能,例如图5所示模块11至模块16的功能。为避免重复,这里不再赘述。
本申请提出的数据接口的自动生成方法、装置、计算机设备及存储介质,通过动态生成与所述接口请求相对应的不需要编译的数据接口,自动生成的数据接口在运行时源代码不会改变,省去了人工触发编译的流程以及编译消耗的时间和资源,同时省去了通过传统方式生成自动的接口在走线上流程时需要人工触发部署和测试的流程,通过本实施例生成的数据接口可以自动进行冒烟测试,不需要人工去触发,缩短了程序开发周期,提升了接口的迭代速度,可以更快速地响应业务的需求。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和/或易失性存储器。非易失性存储器可包括只读存储器(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)等。
所属领域的技术人员可以清楚地了解到,为了描述的方便和简洁,仅以上述各功能单元、模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能单元、模块完成,即将所述装置的内部结构划分成不同的功能单元或模块,以完成以上描述的全部或者部分功能。
以上所述实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围,均应包含在本发明的保护范围之内。

Claims (10)

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.根据权利要求1所述的数据接口的自动生成方法,其特征在于,所述接口属性包括所述数据接口的上线状态,所述对所述数据接口进行冒烟测试的步骤包括:
识别所述数据接口的上线状态;
当所述数据接口的上线状态为立刻上线时,触发对所述数据接口进行冒烟测试。
8.一种数据接口的自动生成装置,其特征在于,所述装置包括:
属性保存模块,用于接收到下游终端设备通过页面传入的携带有接口属性的接口请求时,将所述接口属性保存在预先配置的接口配置表的对应字段中;
配置表识别模块,用于每间隔预设的时间段,对所述接口配置表进行识别;
语句获取模块,用于当识别出所述接口配置表的字段中新增有所述接口属性时,获取ByteBuddy框架中与所述新增接口属性的字段相对应的预先编写的SQL语句;
传入模块,用于根据预先配置的所述接口属性与所述SQL语句中位置的映射关系,将所述接口属性作为入参传入至所述预先编写的SQL语句中,得到与所述接口请求相对应的数据接口;
测试模块,用于对所述数据接口进行冒烟测试;
接口发送模块,用于当所述冒烟测试的测试结果通过时,将所述数据接口发送至所述下游终端设备。
9.一种计算机设备,包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现如权利要求1至7中任一项所述数据接口的自动生成方法的步骤。
10.一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求1至7中任一项所述数据接口的自动生成方法的步骤。
CN202110214522.1A 2021-02-25 2021-02-25 数据接口的自动生成方法、装置、计算机设备及存储介质 Active CN112988132B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202110214522.1A CN112988132B (zh) 2021-02-25 2021-02-25 数据接口的自动生成方法、装置、计算机设备及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202110214522.1A CN112988132B (zh) 2021-02-25 2021-02-25 数据接口的自动生成方法、装置、计算机设备及存储介质

Publications (2)

Publication Number Publication Date
CN112988132A true CN112988132A (zh) 2021-06-18
CN112988132B CN112988132B (zh) 2021-12-21

Family

ID=76350809

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202110214522.1A Active CN112988132B (zh) 2021-02-25 2021-02-25 数据接口的自动生成方法、装置、计算机设备及存储介质

Country Status (1)

Country Link
CN (1) CN112988132B (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114416531A (zh) * 2021-12-23 2022-04-29 税友信息技术有限公司 一种测试数据生成方法、装置、设备及介质

Citations (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107589946A (zh) * 2017-09-12 2018-01-16 中国银行股份有限公司 一种网银产品层代码自动生成方法及装置
WO2018228034A1 (zh) * 2017-06-15 2018-12-20 北京京东尚科信息技术有限公司 生成弹性搜索请求的方法和装置
CN109086046A (zh) * 2018-08-02 2018-12-25 中国建设银行股份有限公司 一种基于接口规范文档的前端代码自动生成方法及系统
CN109857667A (zh) * 2019-02-03 2019-06-07 苏州市龙测智能科技有限公司 接口自动化测试方法、测试装置、测试设备及存储介质
CN110049001A (zh) * 2019-02-27 2019-07-23 新奥特(北京)视频技术有限公司 一种实现WebService服务的方法、装置、存储介质和服务器
CN111638873A (zh) * 2020-05-21 2020-09-08 平安普惠企业管理有限公司 程序代码的生成方法、装置、计算机设备及存储介质
WO2020233330A1 (zh) * 2019-05-20 2020-11-26 深圳壹账通智能科技有限公司 批量测试方法、装置及计算机可读存储介质
CN112131294A (zh) * 2020-09-22 2020-12-25 城云科技(中国)有限公司 一种快速生成接口的方法、系统及其装置
CN112131020A (zh) * 2020-09-22 2020-12-25 杭州城市大数据运营有限公司 一种api接口生成方法、调用方法及其装置、设备和介质
CN112199218A (zh) * 2020-10-26 2021-01-08 北京百家科技集团有限公司 一种压测方法、装置、电子设备及存储介质
CN112256381A (zh) * 2020-10-30 2021-01-22 深圳市九九互动科技有限公司 语言资源处理方法、装置、计算机设备和存储介质

Patent Citations (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2018228034A1 (zh) * 2017-06-15 2018-12-20 北京京东尚科信息技术有限公司 生成弹性搜索请求的方法和装置
CN107589946A (zh) * 2017-09-12 2018-01-16 中国银行股份有限公司 一种网银产品层代码自动生成方法及装置
CN109086046A (zh) * 2018-08-02 2018-12-25 中国建设银行股份有限公司 一种基于接口规范文档的前端代码自动生成方法及系统
CN109857667A (zh) * 2019-02-03 2019-06-07 苏州市龙测智能科技有限公司 接口自动化测试方法、测试装置、测试设备及存储介质
CN110049001A (zh) * 2019-02-27 2019-07-23 新奥特(北京)视频技术有限公司 一种实现WebService服务的方法、装置、存储介质和服务器
WO2020233330A1 (zh) * 2019-05-20 2020-11-26 深圳壹账通智能科技有限公司 批量测试方法、装置及计算机可读存储介质
CN111638873A (zh) * 2020-05-21 2020-09-08 平安普惠企业管理有限公司 程序代码的生成方法、装置、计算机设备及存储介质
CN112131294A (zh) * 2020-09-22 2020-12-25 城云科技(中国)有限公司 一种快速生成接口的方法、系统及其装置
CN112131020A (zh) * 2020-09-22 2020-12-25 杭州城市大数据运营有限公司 一种api接口生成方法、调用方法及其装置、设备和介质
CN112199218A (zh) * 2020-10-26 2021-01-08 北京百家科技集团有限公司 一种压测方法、装置、电子设备及存储介质
CN112256381A (zh) * 2020-10-30 2021-01-22 深圳市九九互动科技有限公司 语言资源处理方法、装置、计算机设备和存储介质

Non-Patent Citations (3)

* Cited by examiner, † Cited by third party
Title
QIANG CHI 等: "A Research of SQL-Based Web Services Automatic Generating Strategy", 《IN PROCEEDINGS OF THE 2010 IEEE ASIA-PACIFIC SERVICES COMPUTING CONFERENCE》 *
崔斌 等: "新型数据管理系统研究进展与趋势", 《软件学报》 *
舞动的痞老板: "bytebuddy简单入门", 《HTTPS://BLOG.CSDN.NET/WANXIAODEREN/ARTICLE/DETAILS/106544773》 *

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114416531A (zh) * 2021-12-23 2022-04-29 税友信息技术有限公司 一种测试数据生成方法、装置、设备及介质

Also Published As

Publication number Publication date
CN112988132B (zh) 2021-12-21

Similar Documents

Publication Publication Date Title
CN111314141B (zh) 路由更新方法及装置
CN111414407A (zh) 数据库的数据查询方法、装置、计算机设备及存储介质
CN109635019B (zh) 请求处理方法、装置、设备及存储介质
CN110569035A (zh) 软件开发项目的代码编译方法、装置、设备和存储介质
WO2021218178A1 (zh) 报表自动生成方法、装置、计算机设备及存储介质
CN110765001B (zh) 针对应用系统的模块化自动测试方法和装置
TW201804323A (zh) 透過移動瀏覽器喚醒app應用的方法及裝置
CN112764751B (zh) 接口生成方法和装置、接口请求方法和装置及存储介质
CN112965731B (zh) 基于Tinker的Flutter热更新方法、装置、设备及存储介质
US20240346026A1 (en) Service processing methods and apparatuses
CN111309593A (zh) Json接口校验的方法、装置、设备及计算机可读存储介质
CN111638873A (zh) 程序代码的生成方法、装置、计算机设备及存储介质
CN110597918A (zh) 一种账户管理方法、装置及计算机可读存储介质
CN111666211A (zh) 服务动态测试方法、装置、计算机设备及存储介质
CN112988132B (zh) 数据接口的自动生成方法、装置、计算机设备及存储介质
JP2022505656A (ja) サブアプリケーション開発方法、装置、コンピュータ機器、並びにコンピュータプログラム
CN111782530A (zh) 一种远程调试方法、装置、系统、电子设备及存储介质
CN114168179B (zh) 微服务管理方法、装置、计算机设备和存储介质
CN111949314A (zh) 应用安装包的生成方法、装置、服务器和存储介质
CN114661580A (zh) 流量录制回放方法、装置、计算机设备及存储介质
CN112925589B (zh) 扩展接口的调用方法及装置
CN113672894A (zh) 针对验证码请求的数据处理方法、装置、设备及存储介质
CN113031957A (zh) 应用程序的安装方法、客户端、终端、服务器及存储介质
CN114461223A (zh) 一种代码生成方法、装置及终端设备
CN114328210A (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