CN113779444B - 接口开发方法、零代码引擎和零代码数据接口开发系统 - Google Patents
接口开发方法、零代码引擎和零代码数据接口开发系统 Download PDFInfo
- Publication number
- CN113779444B CN113779444B CN202111337065.1A CN202111337065A CN113779444B CN 113779444 B CN113779444 B CN 113779444B CN 202111337065 A CN202111337065 A CN 202111337065A CN 113779444 B CN113779444 B CN 113779444B
- Authority
- CN
- China
- Prior art keywords
- interface
- request
- http
- defining
- parameter
- 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
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/95—Retrieval from the web
- G06F16/955—Retrieval from the web using information identifiers, e.g. uniform resource locators [URL]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/95—Retrieval from the web
- G06F16/957—Browsing optimisation, e.g. caching or content distillation
Landscapes
- Engineering & Computer Science (AREA)
- Databases & Information Systems (AREA)
- Theoretical Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Stored Programmes (AREA)
Abstract
本发明提供接口开发方法、零代码引擎和零代码数据接口开发系统,该方法包括:接收接口调用方发送的http请求,其携带URL信息和请求参数的值;根据URL信息从接口配置表中获得对应的接口配置信息;接口配置信息包括如下多个字段:URL字段、接口请求参数字段和SQL实现逻辑字段;URL字段用于定义接口的URL;接口请求参数字段用于定义接口对应的请求参数;SQL实现逻辑字段用于定义接口的功能对应的sql代码,sql代码具有预设的占位符,占位符与接口请求参数字段定义的请求参数一一对应;将请求参数的值替换sql代码中预设的占位符;执行替换占位符之后的sql代码,将执行结果通过http接口返回给接口调用方。本发明提供了一种可视化表单的形式来创建Http接口。
Description
技术领域
本发明涉及数据开发领域,具体涉及接口开发方法、零代码引擎和零代码数据接口开发系统。
背景技术
目前的同类型产品在对外提供多种类型数据源的对外服务的时候,需要硬编码实现,例如使用Java定义Http(Hyper Text Transfer Protocol,超文本传输协议)接口,编写JDBC(Java Database Connectivity,Java数据库连接)的逻辑实现,然后将程序编译打包发版,但是面对不同类型的数据源需要编写不同的适配代码,编译打包部署周期也比较长。其中,Java数据库连接,是Java语言中用来规范客户端程序如何来访问数据库的应用程序接口,提供了诸如查询和更新数据库中数据的方法。
在实现本发明过程中,发明人发现现有技术中至少存在如下问题:现有技术无法实现接口的即时发布和/或测试。
发明内容
有鉴于此,本发明实施例的目的在于提供一种接口开发方法、零代码引擎和零代码数据接口开发系统,以实现接口的即时发布和/或测试。
为达上述目的,第一方面,提供一种接口开发方法,所述方法包括:
接收接口调用方发送的http请求,所述http请求携带URL信息和请求参数的值;
根据所述URL信息从接口配置表中获得与所述URL信息对应的接口配置信息;其中,所述接口配置表用于保存网页形式的接口开发表单对应的接口配置信息;所述接口配置信息包括如下多个字段:统一资源定位器URL字段、接口请求参数字段和SQL实现逻辑字段;所述URL字段用于定义所述接口的URL;所述接口请求参数字段用于定义所述接口对应的请求参数;所述SQL实现逻辑字段用于定义所述接口的功能对应的sql代码,所述sql代码具有预设的占位符,所述占位符与所述接口请求参数字段定义的请求参数一一对应;
将所述http请求中携带的所述请求参数的值替换所述sql代码中预设的占位符;
执行替换占位符之后的sql代码,将执行结果通过http接口返回给所述接口调用方。
在一些可能的实施方式中,所述的根据所述URL信息从接口配置表中获得与所述URL信息对应的接口配置信息,具体包括:
根据所述URL信息,从与零代码管理平台连接的应用数据库存储的接口配置表中,获得与所述URL信息对应的接口配置信息;
其中,所述接口配置信息还包括如下任意多个字段:
接口名称字段,用于定义http接口的名称;
数据源类型字段,用于定义http接口待操作的数据源对象的类型;
数据源标识字段,用于定义http接口待操作的数据源对象的标识;
请求方法字段,用于定义对应http协议的请求方法。
在一些可能的实施方式中,所述接口开发表单用于定义http接口;所述接口开发表单具有可视化界面,在所述可视化界面中呈现如下多个定义项:
接口名称定义项,用于定义http接口的名称;
数据源类型定义项,用于定义http接口待操作的数据源对象的类型;
数据源标识定义项,用于定义http接口待操作的数据源对象标识;
路径定义项,用于定义http接口的请求路径,所述请求路径对应http协议的url;
请求方法定义项,用于定义对应http协议的请求方法;
请求参数定义项,用于定义通过http协议向http服务器发送的业务数据;
实现逻辑定义项,用于定义http服务器接收到http请求后的SQL形式的处理逻辑。
在一些可能的实施方式中,在将所述请求参数替换掉sql代码中预设的占位符之前,还包括:
从所述http请求中获取校验参数;所述校验参数包括:所述接口调用方的应用程序的唯一标识AppId和第一签名参数;
获取与所述AppId一一对应的密钥;
将所述请求参数和所述AppId进行排序处理;
将经过排序处理后的参数依序拼接成查询字符串;
根据所述查询字符串、所述密钥和预设的加密算法,生成第二签名参数;
比较所述第一签名参数与所述第二签名参数是否一致;
当所述第一签名参数与所述第二签名参数一致时,确定所述请求参数合法有效。
在一些可能的实施方式中,所述预设的加密算法包括:信息摘要算法或者安全散列算法;所述的将所述请求参数和所述AppId进行排序处理,具体包括:将所述请求参数和所述AppId根据ASCII的顺序进行排序处理。
第二方面,提供一种零代码引擎,其包括:
Servlet模块,用于接收接口调用方发送的http请求,所述http请求携带URL信息和请求参数的值;根据所述URL信息从接口配置表中获得与所述URL信息对应的接口配置信息;其中,所述接口配置表用于保存网页形式的接口开发表单对应的接口配置信息;所述接口配置信息包括如下多个字段:统一资源定位器URL字段、接口请求参数字段和SQL实现逻辑字段;所述URL字段用于定义所述接口的URL;所述接口请求参数字段用于定义所述接口对应的请求参数;所述SQL实现逻辑字段用于定义所述接口的功能对应的sql代码,所述sql代码具有预设的占位符,所述占位符与所述接口请求参数字段定义的请求参数一一对应;将所述http请求中携带的所述请求参数的值替换所述sql代码中预设的占位符;
SQL引擎模块,用于执行替换占位符之后的sql代码,将执行结果通过http接口返回给所述接口调用方。
在一些可能的实施方式中,所述Servlet模块,具体用于根据所述URL信息,从与零代码管理平台连接的应用数据库存储的接口配置表中,获得与所述URL信息对应的接口配置信息;
其中,所述接口配置信息还包括如下任意多个字段:
接口名称字段,用于定义http接口的名称;
数据源类型字段,用于定义http接口待操作的数据源对象的类型;
数据源标识字段,用于定义http接口待操作的数据源对象的标识;
请求方法字段,用于定义对应http协议的请求方法。
在一些可能的实施方式中,所述接口开发表单用于定义http接口;所述接口开发表单具有可视化界面,在所述可视化界面中呈现如下多个定义项:
接口名称定义项,用于定义http接口的名称;
数据源类型定义项,用于定义http接口待操作的数据源对象的类型;
数据源标识定义项,用于定义http接口待操作的数据源对象标识;
路径定义项,用于定义http接口的请求路径,所述请求路径对应http协议的url;
请求方法定义项,用于定义对应http协议的请求方法;
请求参数定义项,用于定义通过http协议向http服务器发送的业务数据;
实现逻辑定义项,用于定义http服务器接收到http请求后的SQL形式的处理逻辑。
在一些可能的实施方式中,所述的种零代码引擎还包括:鉴权模块,用于:从所述http请求中获取校验参数;所述校验参数包括:所述接口调用方的应用程序的唯一标识AppId和第一签名参数;获取与所述AppId一一对应的密钥;将所述请求参数和所述AppId进行排序处理;将经过排序处理后的参数依序拼接成查询字符串;根据所述查询字符串、所述密钥和预设的加密算法,生成第二签名参数;比较所述第一签名参数与所述第二签名参数是否一致;当所述第一签名参数与所述第二签名参数一致时,确定所述请求参数合法有效。
第三方面,提供一种零代码数据接口开发系统,所述系统包括:
一个或多个集群,每个所述集群包括多个服务器和一个网关服务器,多个所述服务器与所述网关服务器通信连接,所述服务器上设置有如上所述的任意一种零代码引擎;
数据源,用于通过所述零代码引擎向应用程序提供数据;所述数据源包括文件数据源、关系型数据库、非关系型数据库中的任意多个;
零代码管理平台,用于向用户呈现网页形式的接口开发表单,所述接口开发表单用于通过表单的形式定义http接口;接收用户在所述接口开发表单中编辑输入的定义数据;将所述定义数据以接口配置表的形式存储于应用数据库中;
将定义好的接口发布到指定的集群,并且注册到所述指定的集群的多个零代码引擎中,以供接口调用方的应用程序调用。
在一些可能的实施方式中,所述零代码管理平台包括:WEB层、应用层和数据存储层;
所述应用层包括:
系统用户角色权限管理模块,用于为管理员、接口开发人员和应用申请人分配对应的功能权限;
集群管理模块,用于维护管理已有的集群资源;
服务器管理模块,用于与集群下挂载的多个服务器建立心跳联系,根据所述服务器发送的心跳请求确定所述服务器的当前状态;
数据源管理模块,用于管理多种类型的数据源;
接口管理模块,用于对接口进行包括测试和发布在内的管理;
应用管理模块,用于在每个应用程序注册时,为每个应用程序分配一个AppId和密钥;
统计报表模块;用于针对每个接口的使用次数和使用频率提供可视化的统计报表。
第四方面,提供一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现第一方面所述的任意一种接口开发方法。
第五方面,提供一种计算机设备,其包括:
一个或多个处理器;
存储装置,用于存储一个或多个程序;
当所述一个或多个程序被所述一个或多个处理器执行时,使得所述一个或多个处理器实现如第一方面所述的任意一种接口开发方法。
第六方面,提供一种零代码数据接口开发方法,所述方法包括如下步骤:
零代码管理平台向用户呈现网页形式的接口开发表单,所述接口开发表单用于通过表单的形式定义http接口;
零代码管理平台接收用户在所述接口开发表单中编辑输入的接口定义数据;
零代码管理平台将所述接口定义数据以接口配置表的形式存储于应用数据库中;
零代码管理平台将定义好的接口发布到指定的集群,并且注册到所述指定的集群的多个零代码引擎中,以供接口调用方的应用程序调用;
零代码引擎接收接口调用方发送的http请求,所述http请求携带URL信息和请求参数的值;
零代码引擎根据所述URL信息从接口配置表中获得与所述URL信息对应的接口配置信息;其中,所述接口配置表用于保存网页形式的接口开发表单对应的接口配置信息;所述接口配置信息包括如下多个字段:统一资源定位器URL字段、接口请求参数字段和SQL实现逻辑字段;所述URL字段用于定义所述接口的URL;所述接口请求参数字段用于定义所述接口对应的请求参数;所述SQL实现逻辑字段用于定义所述接口的功能对应的sql代码,所述sql代码具有预设的占位符,所述占位符与所述接口请求参数字段定义的请求参数一一对应;
零代码引擎将所述http请求中携带的所述请求参数的值替换所述sql代码中预设的占位符;
零代码引擎执行替换占位符之后的sql代码,将执行结果通过http接口返回给所述接口调用方的应用程序。
上述技术方案具有如下有益效果:
本发明实施例的技术方案主要面向数据开发领域的接口(服务)开发者,在涉及需要操作多种类型数据源的场景下尤其适用,可以向数据开发者提供一致的使用体验。
本发明实施例提供了一种可视化表单的形式创建Http接口,对开发者提供了一致的开发体验,并且可以实时发布预览接口。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明实施例的表单形式的接口开发界面的效果预览图;
图2是本发明实施例的整体解决方案的架构图;
图3是本发明实施例的零代码管理平台的功能架构图;
图4是本发明实施例的零代码引擎的架构图;
图5是本发明实施例的接口开发和应用申请的流程图;
图6是本发明实施例的接口开发方法的流程图;
图7是本发明实施例的计算机可读存储介质的功能框图;
图8是本发明实施例的计算机设备的功能框图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明实施例的技术方案主要面向数据开发领域的接口(服务)开发者,在涉及需要操作多种类型数据源的场景下尤其适用,通过表单的形式来开发一个接口,可以向数据开发者提供一致的使用体验。
实施例一
本发明实施例提供了一种可视化表单的形式创建Http接口,对开发者提供了一致的开发体验,并且可以实时发布预览接口。图1是本发明实施例的表单形式的接口开发界面的效果预览图。图1中可视化的web页面形式的接口开发表单详细描述如下:
接口名称:http接口名称。
数据源类型 & 数据源:该接口待操作的数据源对象,可以是一个数据库或者是一个excel文件等其他结构化数据。
Path定义:http接口的请求路径,对应http协议的url。
请求方法:对应http协议的method。
请求参数定义:通过http协议向http服务器发送的业务数据。
实现逻辑定义:http服务器接收到请求后的处理逻辑,可以是SQL形式。
http接口对应于在图1中接口开发表单中定义的内容,这个http接口原来是需要写代码编译部署才能使用的,本发明实施例可以通过在线表单的形式实时开发部署。本发明实施例针对目前数据开发领域中常见的多类型数据源开发工作量大,学习成本高,编译部署周期长复杂度高的问题,面向数据接口开发者提供了一种一致的且学习成本较低的实现方案,可以快速的以零代码的形式开发部署数据接口。
图2是本发明实施例的整体解决方案的架构图。参阅图2,下面描述图2中各个要素的功能和作用:
接口服务开发者:其是接口服务的提供者,零代码管理平台的主要用户之一,主要职责是在该平台上开发定义管理接口。
零代码管理平台:其是接口服务的管理平台,面向接口服务开发者提供的WEB系统。其还可以将接口配置信息保存到自带的应用数据库中。
图3是本发明实施例的零代码管理平台的功能架构图。如图3所示,该零代码管理平台包括WEB层、应用层和数据存储层。WEB层中包括NGINX,其中,Nginx是一个高性能的HTTP和反向代理web服务器,同时也提供了IMAP/POP3/SMTP服务;Nginx是一款轻量级的Web服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器。应用层中可以包括:系统用户角色权限管理模块、集群管理模块、服务器管理模块、数据源管理模块、接口管理模块、应用管理模块和统计报表模块。数据存储层中可以包括MySql和/或Redis(RemoteDictionary Server,远程字典服务)。MySQL是一个关系型数据库管理系统,redis是一个key-value存储系统或key-value数据库。
应用层中各功能模块的功能如下:
系统用户角色权限管理模块:该零代码管理平台用户有三种角色:管理员、接口开发人员、接口用户(应用申请人),本模块是用来分配这三种角色所有的功能权限。
集群管理模块:参阅图2,该零代码管理平台要维护多个可用集群,每个集群由多台服务器组成,每台服务器上都要安装零代码引擎。接口测试发布的时候需要指定在哪个集群上。集群管理方式可以分为:开发集群,测试集群,生产集群。
集群管理模块用于维护管理已有的集群资源,例如:
表1:集群资源管理的示例表
集群名称 | 主机名称 | 端口 |
开发集群1 | 192.168.41.100 | 8090 |
测试集群2 | 192.168.41.200 | 8091 |
生产集群3 | 192.168.46.100 | 80 |
服务器管理模块:服务器上安装零代码引擎后,该服务器即和零代码管理平台建立心跳联系,根据服务器发送的心跳请求确定服务器的当前状态是处于在线状态还是离线状态,并且显示每个集群下挂载的全部服务器是否已经掉线,在零代码管理平台上即可看到当前可用的所有服务器。
本服务器管理模块主要用来管理集群下挂载的服务器列表,例如:
表2:集群下挂载的服务器列表的示例表
服务器IP | 端口 | 状态 | 所属集群 |
192.168.31.100 | 9876 | 在线 | 开发集群1 |
192.168.31.200 | 9877 | 离线 | 开发集群1 |
数据源管理模块:其是接口数据的提供者,有多种形式,例如数据库,文件系统或者其他接口。
本数据源管理模块主要用于管理各种类型的数据源,以下数据由用户录入,例如:
表3:数据源管理表的示例表
数据源名称 | 数据源类型 | URL | 账号/密码 |
XX-XX系统 | Mysql | Jdbc:mysql://xxxx | xxx |
YY-YY系统 | Oracle | Jdbc:oracle://xxxx | xxxx |
接口管理模块:用于接口开发,以及对接口的管理,例如包括但不限于测试,发版等。例如:新增接口,查询接口列表。其中,新增接口见图1。
应用管理模块:用于在每个应用程序注册时,为每个应用程序分配一个AppId和Secret;例如,新增应用(新增应用后,平台给应用分配一个AppId和Secret),和/或,查询应用列表。
图5是本发明实施例的接口开发和应用申请的流程图。结合参阅图5,图5中涉及两类角色:接口开发人员和应用申请人(用户)。接口开发人员登录系统后,点击接口开发菜单,打开图1的接口开发表单,开始接口开发的工作,开完完成后,测试接口并且在测试完成后发布该接口到集群。应用申请人登录系统后,注册一个APP,注册成功后,可以选择平台中已经发布的接口,这些选择的接口都可以被这个APP调用。
应用申请人可以新建新的应用,并且针对这个应用可以申请要使用哪些接口。对于每个应用系统都会分配一个AppId和Secret。后续这个应用所有的请求都会携带这些参数,零代码引擎会对这些请求做合法性校验。
结合参阅图5,以下举例进行更加详细的说明:
在使用接口开发表单定义接口的步骤中,作为举例的接口定义如下:
数据源:mysql/ds1;
url:/api/user/list;
请求参数:username;
实现逻辑(SQL):select*from mysql.ds1 where username=${username}。
在接口调用方的应用程序向零代码引擎发送的请求中,示例性地发送如下请求:
请求地址:http://${集群IP}/api/user/list;
请求方法:Post;
请求数据:username=张三&appid=XX&sign=XXXX。
在集群中的零代码引擎执行替换了占位符之后SQL语句的步骤中,示例性地执行如下代码实现与第三方数据源的交互:select * from mysql.ds1 where username=´张三´。
统计报表管理模块:用于针对每个接口的使用次数和使用频率提供可视化的统计。
开发者在该零代码管理平台上通过提交表单的形式开发接口,接口开发表单的内容存储在数据库表中,在一个示例中接口配置表(表单数据提交后保存在接口配置表中)的定义如下:
表4:接口配置表定义的一个示例
在其他的示例中,上述接口配置表中可省略ID、State、Develpor、Cluster_ID等字段。
其中,SaaS,是Software-as-a-Service的缩写名称,意思为软件即服务,即通过网络提供软件服务。
服务器:
其可以是标准的服务器,需要提供CPU,内存,磁盘存储服务,操作系统等基础软硬件资源。在本发明实施例中每台服务器都要部署零代码引擎。
零代码引擎:
提供接口服务的运行环境,包括HTTP接口的定义和逻辑实现。每台服务器都要安装部署零代码引擎。
Nginx/F5网关服务器:其用于接口服务的负载均衡和作为对外网络接口。
应用X(应用1、应用2、…应用N):其是该平台的主要用户,接口服务的调用方。
集群:
根据接口的功能和应用范围,在架设本应用架构的时候,可以架设多个相互独立的集群,例如按照开发环境、测试环境、生产环境可以架设三个集群,在实际应用中可以根据客户要求灵活地增加集群配置,然后发布接口到指定集群。
心跳接口:
零代码引擎部署后会和零代码管理平台之间建立心跳联系,每隔一段时间(周期性地)向零代码管理平台发送一次心跳,超过指定时间后如果零代码管理平台没收到心跳请求,则认为该服务器已掉线。在服务器管理模块中可以看到各个服务器的状态。
发布接口:
如图5所示,每个接口开发完后,接口开发人员都要将接口定义按照固定格式发送到零代码引擎并注册到零代码引擎中,注册后应用方可调用。
数据源:
http接口需要交互的数据来源,可以是任意格式的数据形态,例如关系型数据库中的数据,NoSql(泛指非关系型的数据库)数据库,或者excel文件,或者其他类型的数据源等等。
以下详细描述零代码引擎的实现:
接口服务的开发工作主要包括两方面内容:HTTP接口的定义和接口的业务逻辑实现。在本发明实施例中零代码引擎承担着接口服务的主要工作。
图4是本发明实施例的零代码引擎的架构图。图5是本发明实施例的接口开发和应用申请的流程图。请结合参阅图4和图5:
该产品服务的对象就是上文提到的应用管理模块中用户注册的各个应用程序,每个应用程序需要调用的Http接口是由本发明实施例的零代码引擎提供的,http请求是由各个应用程序发起的,响应结果也是提供给应用程序。
应用管理模块中每个应用程序注册的时候,系统都会给每个应用程序分配一个AppId和Secret,后续应用程序的每个http请求都要额外携带两个参数,第一个参数是:AppId,第二个参数是:sign。AppId是所有请求都要携带的一个系统参数,sign也是一个所有请求都要携带的一个系统参数。Sign的生成过程可以包括:对每个请求的业务参数(业务参数就是图1表单中的请求参数定义)与AppId,按照ascii(American Standard Code forInformation Interchange,美国信息交换标准代码)的顺序进行排序,在排序后根据排序确定的顺序将上述参数拼接成查询字符串querystring格式,然后使用MD5签名算法,使用secret做盐值生成sign,例如有两个参数:aid=xx,bname=xxx,那么最终这个额外的参数sign生成算法如下:
sign = MD5(appId=xx&aid=xx&bname=xxx,secret)。
queryString中包含appId和其他请求参数。在另一个举例中,例如某一个接口有两个请求参数:bname和state。那么这个querystring的格式应该是:
querystring = appId=xx&bname=xxx&state=xxx。
sign=MD5(querystring,secret)。
最终接口的请求参数是:appId=xxx;sign=xx;bname=xxx;state=xxx。
具体地,Secret是注册APP成功后,平台给这个APP分配的一个密钥,是用来对请求参数做签名用的,即用secret来生成sign,传输的时候不需要携带secret。签名的时候需要把appId这个参数和图1的“请求参数定义”中的参数一起排序拼接签名。上述示例中的aid和bname是举例,对应图1中的“请求参数定义”。做签名的时候需要把定义的各个参数按照queryString的格式拼接成字符串。queryString格式是把各个请求参数使用&拼接。可替换地,拼接符可以是其他特殊字符,只要签名算法和校验算法保持一致就可以,例如可以使用#或者$代替&。
零代码引擎接受到http请求后,会对请求参数以及上述额外携带的两个参数按照同样的逻辑也计算出localsign参数,比较http请求携带的sign和localsign是否一致,保证请求参数不会在传输途中被篡改。具体地,由于appId和secret都是平台分配的,它们之间是一一对应关系。所以零代码引擎根据AppId可以获取到secret。零代码引擎要使用相同的算法计算出sign值,然后拿请求参数中的sign和计算出来的localsign做比较,如果一致则校验通过。
其中,MD5信息摘要算法(MD5 Message-Digest Algorithm),其是一种密码散列函数,可以产生出一个128位(16字节)的散列值(hash value),用于确保信息传输完整一致。MD5的优点是:1、计算速度快;2、任意长度的数据计算得到的MD5值都是固定长度(128bit,即32位16进制数);3、不可逆。本实施例不限于使用MD5信息摘要算法,其他类似算法也可应用于本实施例中,可以选择任意其他签名算法,例如SHA-1,SHA-256,HMAC-SHA256。其中,安全散列算法(Secure Hash Algorithm,SHA)是一个密码散列函数家族,是FIPS所认证的安全散列算法。能计算出一个数字消息所对应到的,长度固定的字符串(又称消息摘要)的算法。SHA-1(Secure Hash Algorithm 1,安全散列算法1)是一种密码散列函数,SHA-1可以生成一个被称为消息摘要的160位(20字节)散列值,散列值通常的呈现形式为40个十六进制数。HMAC是密钥相关的哈希运算消息认证码(Hash-based Message Authentication Code)的缩写。HMAC-SHA256是指使用SHA256构造的HMAC。
作为ascii排序的一个示例如下,例如有两个参数“user”,“address”,按照ascii排序规则确定的顺序是:1.“address”;2.“user”,因为a排在u之前。但是,在可替换的实施例中,可以采用其他规则来排序,只要保证请求发起方的排序规则和请求接收方(服务端)的排序规则保持一致即可。
在可选的实施例中,如果不考虑安全性,可以不使用上述sign签名。本发明实施例对http接口的参数定义进行了扩展,增加了签名参数sign,有利于提高接口的安全性。
图4右侧中的数据源是第三方提供的各种数据源,主要是提供给http接口调用查询使用的。图4下部中的接口配置表是保存在零代码管理平台的应用数据库中。本系统共涉及两类数据库,一类是本系统自用的应用数据库,例如用来保存当前平台的用户信息,保存接口配置信息,由零代码管理平台和它交互;另一类是第三方提供的各类数据源,例如excel文件,关系型数据库,NOsql数据库等,是真正需要向应用程序提供的数据,由零代码引擎和它负责交互。零代码引擎从接口配置表中匹配一条接口配置信息,填充请求参数,调用SQL引擎执行。以下是一个开发人员定义的接口举例:
Path:/xx/xxx/1;method:GET;params:id=1。
Path:对应path定义;
Method:对应请求方法定义;
Params:对应请求参数定义;
SQL:对应实现逻辑定义;
以上信息就是从接口配置表中读取的一条接口定义。
以下具体描述业务逻辑的实现:
零代码引擎的核心是一个SQL引擎,Http接口的业务逻辑实现完全由SQL(Structured Query Language,结构化查询语言)编写实现,接口开发者只需在接口开发表单中填写SQL脚本即可完成业务逻辑的开发。
SQL引擎的定义:SQL引擎由Schema,Table/View/UDF,Column三层元数据组成,Schema在引擎中代表一类数据源,用来限定操作的数据源类型,Table/View在引擎中代表该类数据源中的数据集合,UDF代表在该类数据源下的用户自定义函数,Column代表数据集合中数据元素的数据结构定义。
SQL引擎需要针对不同的数据源类型实现一套不同的Schema,Table/View/UDF,Column的Java实现。下面以一个Excel文件类型的数据源来说明下如何实现:
Excel数据源的模型定义,该模型定义可以被SQL引擎识别并映射为sql中的一个schema。
以下是本发明实施例作为一个举例的Excel数据源的模型定义:
{
version: '1.0',
defaultSchema: 'excel',
schemas: [
{
name: 'excel',
type: 'custom',
factory: 'org.example.adapter.excel.ExcelSchemaFactory',
operand: {
dir: '/data/excel'
}
}
]
}
在上述举例中,Schema:excel;Table:excel文件名;Column:默认以excel第一行数据作为Table的元数据定义,也可以按照列顺序来定位Column。
最终得到查询指定excel文件数据的SQL定义如下:
//查询user.excel文件中的所有数据;
Select * from excel.user;
//查询user.excel文件中的部分列数据;
Select uname,phone,addr from excel.user;
//根据条件查询user.excel文件中的部分行数据;
Select * from excel.user where phone like ‘135%’。
SQL中的占位符使用${args}来表示,该占位符和Http接口的参数一一对应,运行SQL的时候,将该占位符使用Http请求参数来替换。例如可以这样写带有占位符的SQL代码:
Select * from excel.user where phone like ‘${phone}’。
表5:作为一个举例的用户查询接口开发内容
接口url | 参数 | SQLImpl |
/api/data/excel/userlist | [{paramName:’phone’}] | Select * from excel.user where phone like ‘%’+${phone}+’%’ |
/api/data/redis/userlist | [{paramName:’phone’}] | Select * from redis.user where phone like ‘%’+${phone}+’%’ |
表6:作为一个举例的用户血缘接口查询开发内容
接口url | 参数 | SQLImpl |
/api/data/excel/userlineq | [{paramName:’userId’}] | Select * from excel.lineq where userId = ${userId} |
/api/data/redis/userlineq | [{paramName:’userId’}] | Select * from redis.lineq where userId = ${userId} |
以上接口开发内容都是开发者通过零代码管理平台,在web表单中填写即可完成开发部署。
图4描述的是零代码引擎的工作流程图。如图4所示,零代码引擎所在的服务器http服务器,零代码引擎的作用是:接受APP的请求,根据HTTP请求中的URL信息在接口配置表中找到对应的接口配置,然后加载执行接口配置中的SQL代码,最后将执行结果返回给APP。
以下结合图1和图4详细描述HTTP接口定义的实现:
关于http接口的实现,本发明实施例可以基于servlet技术来实现,统一使用HttpServlet来接收用户的任意请求,使用HttpServletRequest来接收参数。HttpServletRequest,servlet都是J2ee规范中的内容。HttpServletRequest是用来接收http请求的一个java接口。下面描述下http接口的工作流程:
步骤S1、Servlet接收到用户http请求后,根据http请求携带的URL信息到接口配置表中查找对应的一条接口配置信息,上述查找是基于URL的唯一性,该请求中携带的URL信息与匹配到的接口配置信息中的URL字段相同。该接口配置信息包括:图1中定义的“请求参数定义”对应的参数,URL字段信息,请求方法和sql等信息;URL信息是接口开发者来开发定义的,是http接口的重要组成部分,开发完成后发布到集群中,应用程序可以调用已经发布到集群中的http接口,http接口中可以携带url信息和参数信息。url信息对应图1中接口开发表单中的path定义项。具体的,上述参数信息包括根据图1表单中的“请求参数定义”中定义的请求参数和注册APP成功后系统分配的AppID生成的签名参数sign。图1的接口开发表单的信息保存到接口配置表中,sql对应图1表单中的“实现逻辑定义”。
步骤S2、然后,零代码引擎的Servlet模块根据参数配置从httpServletRequest中获取请求参数;这里的参数配置是图1中的接口开发表单中的请求参数项定义的内容,其是http接口定义的一部分。Servlet是一个通用的JAVA HTTP服务开发技术标注,由于本发明实施例的接口实现也是基于http协议的,所以这里使用了servlet。
步骤S3、然后,零代码引擎的Servlet模块将参数替换掉sql代码中的占位符;步骤S2中的请求参数会替换掉sql代码中的占位符,sql中的占位符是开发人员在开发接口的时候定义好的,占位符与步骤S2中的请求参数是一一对应的关系。占位符以${param}格式定义,例如当传递参数param=zhangsan,在SQL中的${param}会被替换成zhangsan。
步骤S4、最后,零代码引擎调用sql引擎执行sql代码。具体地,这一步是在零代码引擎中执行的,执行sql代码后的结果可以是一堆数据,例如“查询用户列表”这个接口,则返回的是一个用户集合。这个用户集合通过http接口响应返回给app(请求发送方)。
本发明实施例的有益技术效果包括:
本发明实施例的接口开发内容都是开发者通过零代码管理平台,在web表单中填写即可完成开发部署。
本发明实施例使用SQL代替java语言来实现业务逻辑,其中SQL无需编译,可实时部署运行,应用范围广,用户群体庞大,学习成本低。
本发明实施例通过页面表单的形式定义http接口,代替使用Java硬编码定义接口,可以实现接口的即时发布和测试。
本发明实施例对http接口的参数定义进行了扩展,增加了签名参数sign,有利于提高接口的安全性。
本发明实施例提供了完整的产品实现,从接口定义、发布,到APP的注册、接口的申请。
实施例二
如图4所示,本实施例提供一种零代码引擎,其可配置于http服务器上,其可以包括:
Servlet模块,用于接收接口调用方发送的http请求,http请求携带URL信息和请求参数的值;根据URL信息从接口配置表中获得与URL信息对应的接口配置信息;其中,接口配置表用于保存网页形式的接口开发表单对应的接口配置信息;接口配置信息包括如下多个字段:统一资源定位器URL字段、接口请求参数字段和SQL实现逻辑字段;URL字段用于定义接口的URL;接口请求参数字段用于定义接口对应的请求参数;SQL实现逻辑字段用于定义接口的功能对应的sql代码,sql代码具有预设的占位符,占位符与接口请求参数字段定义的请求参数一一对应;将http请求中携带的请求参数的值替换sql代码中预设的占位符;
SQL引擎模块,用于执行替换占位符之后的sql代码,将执行结果通过http接口返回给接口调用方。
具体地,本实施例将sql代码中的占位符用请求参数相应地一一替换后,在零代码引擎中执行替换后的sql,最后将sql的执行结果通过接口返回给接口调用方(App)。
在进一步的实施例中,Servlet模块,具体用于根据URL信息,从与零代码管理平台连接的应用数据库存储的接口配置表中,获得与URL信息对应的接口配置信息;
其中,接口配置信息还包括如下任意多个字段:
接口名称字段,用于定义http接口的名称;
数据源类型字段,用于定义http接口待操作的数据源对象的类型;
数据源标识字段,用于定义http接口待操作的数据源对象的标识;
请求方法字段,用于定义对应http协议的请求方法。
在进一步的实施例中,接口开发表单用于定义http接口;接口开发表单具有可视化界面,在可视化界面中呈现如下多个定义项:
接口名称定义项,用于定义http接口的名称;
数据源类型定义项,用于定义http接口待操作的数据源对象的类型;
数据源标识定义项,用于定义http接口待操作的数据源对象标识;
路径定义项,用于定义http接口的请求路径,请求路径对应http协议的url;
请求方法定义项,用于定义对应http协议的请求方法;
请求参数定义项,用于定义通过http协议向http服务器发送的业务数据;
实现逻辑定义项,用于定义http服务器接收到http请求后的SQL形式的处理逻辑。
在进一步的实施例中,该零代码引擎还可以包括:Filter鉴权模块,用于:从http请求中获取校验参数;校验参数包括:AppId和sign;其中,AppId是每个接口调用方的应用程序APP的唯一标识,sign是签名参数;获取与AppId一一对应的secret;其中,secret是为App分配的密钥;将请求参数和AppId进行排序处理;将经过排序处理后的参数依序拼接成查询字符串;根据查询字符串、作为盐值的secret和预设的加密算法,生成localsign;比较localsign与sign是否一致;当localsign与sign一致时,确定请求参数合法有效。
开发人员完成接口开发后,用户可以在该平台上注册一个APP,可以申请该APP需要调用的接口。注册APP成功后,该零代码管理平台将会为此APP分配AppId和Secret。AppId:每个APP唯一的标记,secret:每个App分配的一个密钥,sign:用户请求的http参数使用secret签名加密后,生成签名参数sign。该APP调用http接口的时候,需要携带AppId和sign两个参数。
所属领域的技术人员可以清楚地了解到,为了描述的方便和简洁,仅以上述各功能单元、模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能单元、模块完成,即将所述装置的内部结构划分成不同的功能单元或模块,以完成以上描述的全部或者部分功能。实施例中的各功能单元、模块可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中,上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。另外,各功能单元、模块的具体名称也只是为了便于相互区分,并不用于限制本申请的保护范围。上述系统中单元、模块的具体工作过程,可参考前述方法实施例中的对应过程,在此不再赘述。
实施例三
图6是本发明实施例的接口开发方法的流程图。如图6所示,其包括如下步骤:
S110、接收接口调用方发送的http请求,http请求携带URL信息和请求参数的值;
在其他的实施例中,http请求中还可以进一步携带请求方法,其对应http协议的method,例如get或post方法。请求参数的数量可以为一个或多个。上述http请求可以是接口调用方的应用程序APP发送的。
S120、根据URL信息从接口配置表中获得与URL信息对应的接口配置信息;其中,接口配置表用于保存网页形式的接口开发表单对应的接口配置信息;接口配置信息包括如下多个字段:统一资源定位器URL字段、接口请求参数字段和SQL实现逻辑字段;URL字段用于定义接口的URL;接口请求参数字段用于定义接口对应的请求参数;SQL实现逻辑字段用于定义接口的功能对应的sql代码,sql代码具有预设的占位符,占位符与接口请求参数字段定义的请求参数一一对应。
具体地,接口配置表中具有多条或多行记录,每条记录对应一个接口配置信息。
具体地,开发人员开发接口的工作界面是在一个网页的表单中完成的(原来需要在IDE中完成开发,编译,部署),接口开发表单中除了需要填写http接口相关信息外,还需要填写SQL信息,接口的功能实现就是用SQL来描述的。SQL可以直接被解释执行无需编译。图1中的“实现逻辑定义”中填写的就是该SQL信息。
S130、将http请求中携带的请求参数的值替换sql代码中预设的占位符。
S140、执行替换占位符之后的sql代码,将执行结果通过http接口返回给接口调用方。
具体地,本步骤S140在获取结果后,将获取的结果通过http协议返回给接口调用方的应用程序。上述http接口为接口调用方调用的http接口。
在一些实施例中,步骤S120中根据URL信息从接口配置表中获得与URL信息对应的接口配置信息,具体包括:根据URL信息,从与零代码管理平台连接的应用数据库存储的接口配置表中,获得与URL信息对应的接口配置信息;
其中,接口配置信息还包括如下任意多个字段:
接口名称字段,用于定义http接口的名称;
数据源类型字段,用于定义http接口待操作的数据源对象的类型;
数据源标识字段,用于定义http接口待操作的数据源对象的标识;
请求方法字段,用于定义对应http协议的请求方法。
在一些实施例中,接口开发表单用于定义http接口;接口开发表单具有可视化界面,在可视化界面中呈现如下多个定义项:
接口名称定义项,用于定义http接口的名称;
数据源类型定义项,用于定义http接口待操作的数据源对象的类型;
数据源标识定义项,用于定义http接口待操作的数据源对象标识;
路径定义项,用于定义http接口的请求路径,请求路径对应http协议的url;
请求方法定义项,用于定义对应http协议的请求方法;
请求参数定义项,用于定义通过http协议向http服务器发送的业务数据;
实现逻辑定义项,用于定义http服务器接收到http请求后的SQL形式的处理逻辑。
进一步地,在将请求参数替换掉sql代码中预设的占位符之前,还包括如下步骤:
从http请求中获取校验参数;校验参数包括:AppId和sign;其中,AppId是每个接口调用方的应用程序APP的唯一标识,sign是签名参数;
获取与AppId一一对应的secret;其中,secret是为App分配的密钥;
将请求参数和AppId进行排序处理;将经过排序处理后的参数依序拼接成查询字符串;
根据查询字符串、作为盐值的secret和预设的加密算法,生成localsign;
比较localsign与sign是否一致;
当localsign与sign一致时,确定请求参数合法有效。
可选地,预设的加密算法包括:信息摘要算法或者安全散列算法;的将请求参数和AppId进行排序处理,具体包括:将请求参数和AppId根据ASCII的顺序进行排序处理。
实施例四
如图7所示,本发明实施例还提供了一种计算机可读存储介质200,计算机可读存储介质200内存储有计算机程序210,计算机程序210被处理器执行时实现上述任意一种接口开发方法的各步骤。
所述集成的模块/单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明实现上述实施例方法中的全部或部分流程,也可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一计算机可读存储介质中,该计算机程序在被处理器执行时,可实现上述各个方法实施例的步骤。其中,所述计算机程序包括计算机程序代码,所述计算机程序代码可以为源代码形式、对象代码形式、可执行文件或某些中间形式等。所述计算机可读介质可以包括:能够携带所述计算机程序代码的任何实体或装置、记录介质、U盘、移动硬盘、磁碟、光盘、计算机存储器、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、电载波信号、电信信号以及软件分发介质等。当然,还有其他方式的可读存储介质,例如量子存储器、石墨烯存储器等等。需要说明的是,所述计算机可读介质包含的内容可以根据司法管辖区内立法和专利实践的要求进行适当的增减,例如在某些司法管辖区,根据立法和专利实践,计算机可读介质不包括电载波信号和电信信号。
实施例五
本发明实施例还提供了一种计算机设备,如图8所示,包括一个或多个处理器301、通信接口302、存储器303和通信总线304,其中,处理器301,通信接口302,存储器303通过通信总线304完成相互间的通信。
存储器303,用于存放计算机程序;
处理器301,用于执行存储器303上所存放的程序时,实现上述方法的各步骤,例如,处理器301执行存储器303上所存放的程序时实现如下步骤:
接收接口调用方发送的http请求,http请求携带URL信息和请求参数的值;
根据URL信息从接口配置表中获得与URL信息对应的接口配置信息;其中,接口配置表用于保存网页形式的接口开发表单对应的接口配置信息;接口配置信息包括如下多个字段:统一资源定位器URL字段、接口请求参数字段和SQL实现逻辑字段;URL字段用于定义接口的URL;接口请求参数字段用于定义接口对应的请求参数;SQL实现逻辑字段用于定义接口的功能对应的sql代码,sql代码具有预设的占位符,占位符与接口请求参数字段定义的请求参数一一对应;
将http请求中携带的请求参数的值替换sql代码中预设的占位符;
执行替换占位符之后的sql代码,将执行结果通过http接口返回给接口调用方。
一种可能的设计中,处理器301执行的处理中,的根据URL信息从接口配置表中获得与URL信息对应的接口配置信息,具体包括:
根据URL信息,从与零代码管理平台连接的应用数据库存储的接口配置表中,获得与URL信息对应的接口配置信息;
其中,接口配置信息还包括如下任意多个字段:
接口名称字段,用于定义http接口的名称;
数据源类型字段,用于定义http接口待操作的数据源对象的类型;
数据源标识字段,用于定义http接口待操作的数据源对象的标识;
请求方法字段,用于定义对应http协议的请求方法。
一种可能的设计中,处理器301执行的处理中,接口开发表单用于定义http接口;接口开发表单具有可视化界面,在可视化界面中呈现如下多个定义项:
接口名称定义项,用于定义http接口的名称;
数据源类型定义项,用于定义http接口待操作的数据源对象的类型;
数据源标识定义项,用于定义http接口待操作的数据源对象标识;
路径定义项,用于定义http接口的请求路径,请求路径对应http协议的url;
请求方法定义项,用于定义对应http协议的请求方法;
请求参数定义项,用于定义通过http协议向http服务器发送的业务数据;
实现逻辑定义项,用于定义http服务器接收到http请求后的SQL形式的处理逻辑。
一种可能的设计中,处理器301执行的处理中,在将请求参数替换掉sql代码中预设的占位符之前,还包括:
从http请求中获取校验参数;校验参数包括:接口调用方的应用程序的唯一标识AppId和第一签名参数;
获取与AppId一一对应的密钥;
将请求参数和AppId进行排序处理;
将经过排序处理后的参数依序拼接成查询字符串;
根据查询字符串、密钥和预设的加密算法,生成第二签名参数;
比较第一签名参数与第二签名参数是否一致;
当第一签名参数与第二签名参数一致时,确定请求参数合法有效。
一种可能的设计中,处理器301执行的处理中,预设的加密算法包括:信息摘要算法或者安全散列算法;将请求参数和AppId进行排序处理,具体包括:将请求参数和AppId根据ASCII的顺序进行排序处理。
处理器301可以是通用处理器,包括中央处理器(Central Processing Unit,CPU)、网络处理器(Network Processor,NP)等;还可以是数字信号处理器(Digital SignalProcessing,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现场可编程门阵列(Field-Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。
存储器303可以包括用于数据或指令的大容量存储器。举例来说而非限制,存储器303可包括硬盘驱动器(Hard Disk Drive,HDD)、软盘驱动器、闪存、光盘、磁光盘、磁带或通用串行总线(Universal Serial Bus,USB)驱动器或者两个或更多个以上这些的组合。在合适的情况下,存储器303可包括可移除或不可移除(或固定)的介质。在特定实施例中,存储器303是非易失性固态存储器。在特定实施例中,存储器303包括只读存储器(ROM)。在合适的情况下,该ROM可以是掩模编程的ROM、可编程ROM(PROM)、可擦除PROM(EPROM)、电可擦除PROM(EEPROM)、电可改写ROM(EAROM)或闪存或者两个或更多个以上这些的组合。
通信总线304包括硬件、软件或两者,用于将上述部件彼此耦接在一起。举例来说,总线可包括加速图形端口(AGP)或其他图形总线、增强工业标准架构(EISA)总线、前端总线(FSB)、超传输(HT)互连、工业标准架构(ISA)总线、无限带宽互连、低引脚数(LPC)总线、存储器总线、微信道架构(MCA)总线、外围组件互连(PCI)总线、PCI-Express(PCI-X)总线、串行高级技术附件(SATA)总线、视频电子标准协会局部(VLB)总线或其他合适的总线或者两个或更多个以上这些的组合。在合适的情况下,总线可包括一个或多个总线。尽管本发明实施例描述和示出了特定的总线,但本发明考虑任何合适的总线或互连。
上述对本说明书特定实施例进行了描述。其它实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。
虽然本申请提供了如实施例或流程图的方法操作步骤,但基于常规或者无创造性的劳动可以包括更多或者更少的操作步骤。实施例中列举的步骤顺序仅仅为众多步骤执行顺序中的一种方式,不代表唯一的执行顺序。在实际中的装置或客户端产品执行时,可以按照实施例或者附图所示的方法顺序执行或者并行执行(例如并行处理器或者多线程处理的环境)。
本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
本发明中应用了具体实施例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。
Claims (14)
1.一种接口开发方法,其特征在于,所述方法包括:
接收接口调用方发送的http请求,所述http请求携带URL信息、请求参数的值和校验参数;
从所述http请求中获取校验参数;所述校验参数包括:所述接口调用方的应用程序的唯一标识AppId和第一签名参数;获取与所述AppId一一对应的密钥;将所述请求参数和所述AppId进行排序处理;将经过排序处理后的参数依序拼接成查询字符串;根据所述查询字符串、所述密钥和预设的加密算法,生成第二签名参数;比较所述第一签名参数与所述第二签名参数是否一致;当所述第一签名参数与所述第二签名参数一致时,确定所述请求参数合法有效;
根据所述URL信息从接口配置表中获得与所述URL信息对应的接口配置信息;其中,所述接口配置表用于保存网页形式的接口开发表单对应的接口配置信息;所述接口配置信息包括如下多个字段:统一资源定位器URL字段、接口请求参数字段、SQL实现逻辑字段、数据源类型字段和数据源标识字段;所述URL字段用于定义接口的URL;所述接口请求参数字段用于定义所述接口对应的请求参数;所述SQL实现逻辑字段用于定义所述接口的功能对应的sql代码,所述sql代码具有预设的占位符,所述占位符与所述接口请求参数字段定义的请求参数一一对应;所述数据源类型字段,用于定义http接口待操作的数据源对象的类型;其中,所述数据源对象的类型包括文件数据源、关系型数据库或者非关系型数据库;所述数据源标识字段,用于定义http接口待操作的数据源对象的标识;
将所述http请求中携带的所述请求参数的值替换所述sql代码中预设的占位符;
执行替换占位符之后的sql代码,将执行结果通过http接口返回给所述接口调用方。
2.根据权利要求1所述的方法,其特征在于,所述的根据所述URL信息从接口配置表中获得与所述URL信息对应的接口配置信息,具体包括:
根据所述URL信息,从与零代码管理平台连接的应用数据库存储的接口配置表中,获得与所述URL信息对应的接口配置信息;
其中,所述接口配置信息还包括如下任意多个字段:
接口名称字段,用于定义http接口的名称;
请求方法字段,用于定义对应http协议的请求方法。
3.根据权利要求1所述的方法,其特征在于,所述接口开发表单用于定义http接口;所述接口开发表单具有可视化界面,在所述可视化界面中呈现如下多个定义项:
接口名称定义项,用于定义http接口的名称;
数据源类型定义项,用于定义http接口待操作的数据源对象的类型;
数据源标识定义项,用于定义http接口待操作的数据源对象标识;
路径定义项,用于定义http接口的请求路径,所述请求路径对应http协议的URL;
请求方法定义项,用于定义对应http协议的请求方法;
请求参数定义项,用于定义通过http协议向http服务器发送的业务数据;
实现逻辑定义项,用于定义http服务器接收到http请求后的SQL形式的处理逻辑。
4.根据权利要求1所述的方法,其特征在于,所述预设的加密算法包括:信息摘要算法或者安全散列算法。
5.根据权利要求1所述的方法,其特征在于,所述的将所述请求参数和所述AppId进行排序处理,具体包括:将所述请求参数和所述AppId根据ASCII的顺序进行排序处理。
6.一种零代码引擎,其特征在于,包括:
鉴权模块,用于接收接口调用方发送的http请求,所述http请求携带URL信息、请求参数的值和校验参数;从所述http请求中获取校验参数;所述校验参数包括:所述接口调用方的应用程序的唯一标识AppId和第一签名参数;获取与所述AppId一一对应的密钥;将所述请求参数和所述AppId进行排序处理;将经过排序处理后的参数依序拼接成查询字符串;根据所述查询字符串、所述密钥和预设的加密算法,生成第二签名参数;比较所述第一签名参数与所述第二签名参数是否一致;当所述第一签名参数与所述第二签名参数一致时,确定所述请求参数合法有效;
Servlet模块,用于根据所述URL信息从接口配置表中获得与所述URL信息对应的接口配置信息;其中,所述接口配置表用于保存网页形式的接口开发表单对应的接口配置信息;所述接口配置信息包括如下多个字段:统一资源定位器URL字段、接口请求参数字段、SQL实现逻辑字段、数据源类型字段和数据源标识字段;所述URL字段用于定义所述接口的URL;所述接口请求参数字段用于定义所述接口对应的请求参数;所述SQL实现逻辑字段用于定义所述接口的功能对应的sql代码,所述sql代码具有预设的占位符,所述占位符与所述接口请求参数字段定义的请求参数一一对应;所述数据源类型字段,用于定义http接口待操作的数据源对象的类型;其中,所述数据源对象的类型包括文件数据源、关系型数据库或者非关系型数据库;所述数据源标识字段,用于定义http接口待操作的数据源对象的标识;将所述http请求中携带的所述请求参数的值替换所述sql代码中预设的占位符;
SQL引擎模块,用于执行替换占位符之后的sql代码,将执行结果通过http接口返回给所述接口调用方。
7.根据权利要求6所述的零代码引擎,其特征在于,所述Servlet模块,具体用于根据所述URL信息,从与零代码管理平台连接的应用数据库存储的接口配置表中,获得与所述URL信息对应的接口配置信息;
其中,所述接口配置信息还包括如下任意多个字段:
接口名称字段,用于定义http接口的名称;
请求方法字段,用于定义对应http协议的请求方法。
8.根据权利要求6所述的零代码引擎,其特征在于,所述接口开发表单用于定义http接口;所述接口开发表单具有可视化界面,在所述可视化界面中呈现如下多个定义项:
接口名称定义项,用于定义http接口的名称;
数据源类型定义项,用于定义http接口待操作的数据源对象的类型;
数据源标识定义项,用于定义http接口待操作的数据源对象标识;
路径定义项,用于定义http接口的请求路径,所述请求路径对应http协议的URL;
请求方法定义项,用于定义对应http协议的请求方法;
请求参数定义项,用于定义通过http协议向http服务器发送的业务数据;
实现逻辑定义项,用于定义http服务器接收到http请求后的SQL形式的处理逻辑。
9.根据权利要求6所述的零代码引擎,其特征在于,所述预设的加密算法包括:信息摘要算法或者安全散列算法;所述的将所述请求参数和所述AppId进行排序处理,具体包括:将所述请求参数和所述AppId根据ASCII的顺序进行排序处理。
10.一种零代码数据接口开发系统,其特征在于,所述系统包括:
一个或多个集群,每个所述集群包括多个服务器和一个网关服务器,多个所述服务器与所述网关服务器通信连接,所述服务器上设置有权利要求6-9中任一项所述的零代码引擎;
数据源,用于通过所述零代码引擎向应用程序提供数据;所述数据源包括文件数据源、关系型数据库、非关系型数据库中的任意多个;
零代码管理平台,用于向用户呈现网页形式的接口开发表单,所述接口开发表单用于通过表单的形式定义http接口;接收用户在所述接口开发表单中编辑输入的定义数据;将所述定义数据以接口配置表的形式存储于应用数据库中;将定义好的接口发布到指定的集群,并且注册到所述指定的集群的多个零代码引擎中,以供接口调用方的应用程序调用。
11.根据权利要求10所述的系统,其特征在于,所述零代码管理平台包括:WEB层、应用层和数据存储层;
所述应用层包括:
系统用户角色权限管理模块,用于为管理员、接口开发人员和应用申请人分配对应的功能权限;
集群管理模块,用于维护管理已有的集群资源;
服务器管理模块,用于与集群下挂载的多个服务器建立心跳联系,根据所述服务器发送的心跳请求确定所述服务器的当前状态;
数据源管理模块,用于管理多种类型的数据源;
接口管理模块,用于对接口进行包括测试和发布在内的管理;
应用管理模块,用于在每个应用程序注册时,为每个应用程序分配一个应用程序标识和密钥;
统计报表模块;用于针对每个接口的使用次数和使用频率提供可视化的统计报表。
12.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行时实现如权利要求1-5中任意一项所述的接口开发方法。
13.一种计算机设备,其特征在于,其包括:
一个或多个处理器;
存储装置,用于存储一个或多个程序;
当所述一个或多个程序被所述一个或多个处理器执行时,使得所述一个或多个处理器实现如权利要求1-5中任一所述的接口开发方法。
14.一种零代码数据接口开发方法,其特征在于,所述方法包括如下步骤:
零代码管理平台向用户呈现网页形式的接口开发表单,所述接口开发表单用于通过表单的形式定义http接口;
零代码管理平台接收用户在所述接口开发表单中编辑输入的接口定义数据;
零代码管理平台将所述接口定义数据以接口配置表的形式存储于应用数据库中;
零代码管理平台将定义好的接口发布到指定的集群,并且注册到所述指定的集群的多个零代码引擎中,以供接口调用方的应用程序调用;
零代码引擎接收接口调用方发送的http请求,所述http请求携带URL信息、请求参数的值和校验参数;
零代码引擎从所述http请求中获取校验参数;所述校验参数包括:所述接口调用方的应用程序的唯一标识AppId和第一签名参数;获取与所述AppId一一对应的密钥;将所述请求参数和所述AppId进行排序处理;将经过排序处理后的参数依序拼接成查询字符串;根据所述查询字符串、所述密钥和预设的加密算法,生成第二签名参数;比较所述第一签名参数与所述第二签名参数是否一致;当所述第一签名参数与所述第二签名参数一致时,确定所述请求参数合法有效;
零代码引擎根据所述URL信息从接口配置表中获得与所述URL信息对应的接口配置信息;其中,所述接口配置表用于保存网页形式的接口开发表单对应的接口配置信息;所述接口配置信息包括如下多个字段:统一资源定位器URL字段、接口请求参数字段、SQL实现逻辑字段、数据源类型字段和数据源标识字段;所述URL字段用于定义所述接口的URL;所述接口请求参数字段用于定义所述接口对应的请求参数;所述SQL实现逻辑字段用于定义所述接口的功能对应的sql代码,所述sql代码具有预设的占位符,所述占位符与所述接口请求参数字段定义的请求参数一一对应;所述数据源类型字段,用于定义http接口待操作的数据源对象的类型;其中,所述数据源对象的类型包括文件数据源、关系型数据库或者非关系型数据库;所述数据源标识字段,用于定义http接口待操作的数据源对象的标识;
零代码引擎将所述http请求中携带的所述请求参数的值替换所述sql代码中预设的占位符;
零代码引擎执行替换占位符之后的sql代码,将执行结果通过http接口返回给所述接口调用方的应用程序。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111337065.1A CN113779444B (zh) | 2021-11-12 | 2021-11-12 | 接口开发方法、零代码引擎和零代码数据接口开发系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111337065.1A CN113779444B (zh) | 2021-11-12 | 2021-11-12 | 接口开发方法、零代码引擎和零代码数据接口开发系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113779444A CN113779444A (zh) | 2021-12-10 |
CN113779444B true CN113779444B (zh) | 2022-02-08 |
Family
ID=78957018
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111337065.1A Active CN113779444B (zh) | 2021-11-12 | 2021-11-12 | 接口开发方法、零代码引擎和零代码数据接口开发系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113779444B (zh) |
Families Citing this family (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114490762B (zh) * | 2022-01-20 | 2022-11-22 | 北京宇信科技集团股份有限公司 | 用于决策引擎的数据源取数方法、装置、介质和设备 |
CN114547521A (zh) * | 2022-02-28 | 2022-05-27 | 北京有竹居网络技术有限公司 | 基于权限的交互式接口发布方法、装置及电子设备 |
CN115665257B (zh) * | 2022-12-27 | 2023-04-28 | 成都同步新创科技股份有限公司 | 基于反向代理和动态脚本的请求处理方法及装置 |
CN115878630B (zh) * | 2023-02-01 | 2023-06-23 | 天翼云科技有限公司 | 一种自定义接口调用方法、装置、电子设备和存储介质 |
CN115811513B (zh) * | 2023-02-08 | 2023-06-02 | 广州市玄武无线科技股份有限公司 | 第三方接口请求设计方法、装置、存储介质 |
CN116560641A (zh) * | 2023-04-19 | 2023-08-08 | 上海百秋智尚网络服务有限公司 | 接口自动生成方法、装置、设备及存储介质 |
CN116594611B (zh) * | 2023-07-18 | 2023-10-27 | 浩鲸云计算科技股份有限公司 | 一种基于领域模型语言的零代码通用服务实现方法 |
Family Cites Families (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7441188B1 (en) * | 2004-08-04 | 2008-10-21 | Sprint Communications Company L.P. | Web construction framework presentation tier |
US9760236B2 (en) * | 2011-10-14 | 2017-09-12 | Georgia Tech Research Corporation | View virtualization and transformations for mobile applications |
CN102508673B (zh) * | 2011-12-02 | 2015-07-29 | 方正国际软件有限公司 | 快速开发与配置平台类软件的系统及方法 |
CN105956830A (zh) * | 2016-05-11 | 2016-09-21 | 中煤电气有限公司 | 一种基于j2ee框架的企业级可视化应用开发平台 |
CN110287113A (zh) * | 2019-06-25 | 2019-09-27 | 四川长虹电器股份有限公司 | 自动化接口测试方法 |
CN110989983B (zh) * | 2019-11-28 | 2022-11-29 | 深圳航天智慧城市系统技术研究院有限公司 | 一种零编码的应用软件快速构建系统 |
CN112764751A (zh) * | 2021-01-27 | 2021-05-07 | 深圳市酷开网络科技股份有限公司 | 接口生成方法和装置、接口请求方法和装置及存储介质 |
CN113590102B (zh) * | 2021-09-28 | 2021-12-24 | 北京宇信科技集团股份有限公司 | 一种零代码快速软件开发方法、系统、介质和设备 |
-
2021
- 2021-11-12 CN CN202111337065.1A patent/CN113779444B/zh active Active
Also Published As
Publication number | Publication date |
---|---|
CN113779444A (zh) | 2021-12-10 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN113779444B (zh) | 接口开发方法、零代码引擎和零代码数据接口开发系统 | |
CN110727712B (zh) | 基于区块链网络的数据处理方法、装置、电子设备及存储介质 | |
US11640474B2 (en) | Method and apparatus for operating database | |
US10891552B1 (en) | Automatic parser selection and usage | |
US20190305959A1 (en) | Announcement smart contracts to announce software release | |
US11949789B2 (en) | Blockchain-enabled computing | |
US9690822B2 (en) | System and method for metadata level validation of custom setup objects | |
US10754634B1 (en) | Customized application package with context specific token | |
US11223482B2 (en) | Secure data exchange | |
CN111314306A (zh) | 接口访问方法及装置、电子设备、存储介质 | |
US8856540B1 (en) | Customized ID generation | |
CN111314172B (zh) | 基于区块链的数据处理方法、装置、设备及存储介质 | |
CN113271311B (zh) | 一种跨链网络中的数字身份管理方法及系统 | |
CN109067732A (zh) | 物联网设备及数据接入系统、方法及计算机可读存储介质 | |
US10897361B1 (en) | Automated hash validation | |
CN110795315A (zh) | 监控业务的方法和装置 | |
CN112311779B (zh) | 应用于区块链系统的数据访问控制方法及装置 | |
WO2022088710A1 (zh) | 一种镜像管理方法及装置 | |
CN115114372A (zh) | 基于区块链的数据处理方法、装置、设备及可读存储介质 | |
CN116737598B (zh) | 页面调试方法、装置、电子设备和计算机可读介质 | |
CN111339193B (zh) | 类别的编码方法及装置 | |
US20100030805A1 (en) | Propagating information from a trust chain processing | |
US11349670B1 (en) | Automated hash validation | |
US20220045866A1 (en) | Method and system for authentication seal deployment in networked immutable transactions | |
CN110705935B (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 |