第三方平台对接实现方法、装置、设备及存储介质
技术领域
本发明涉及计算机技术领域,尤其涉及一种第三方平台对接实现方法、装置、设备及存储介质。
背景技术
通常情况下对接第三方平台开放的SOAP服务或API接口需要开发人员编写程序实现对接。这些SOAP服务或API接口大体上又分为请求头,URL参数,请求主体及响应,服务配置对接系统找出这种规律,通过内置解析引擎可通过在界面上简单配置即实现对接任意第三方平台提供的SOAP服务和API接口。
如图1所示,现有技术在调用第三方SOAP服务或API接口时需要开发人员编写JAVA代码来实现调用或接收第三方回调参数(图中InterfaceA,InterfaceCallbackA需要开发者编写Java代码实现)。由于不同接口需要编写不同代码来实现。如此,随着接入的第三方接口不断增多时,图1中Interface,InterfaceCallback会不断增加,随之带来如下问题:
1.错误率高(在参数组装或加密签名时一个参数的位置可能就会引发错误);
2.对接缓慢(由于不同接口传递的参数和加密方式都不同需要开发者根据不同接口文档编码实现);
3.重复开发(代码重复);
4.频繁布署(发布接口需重启服务器,集群环境下需每个节点逐个重启);
5.上游接口参数改动需重新修改代码;
6.扩展性低(添加功能需逐个接口去修改);
7.维护困难。
发明内容
针对上述问题,本发明的目的在于提供一种第三方平台对接实现方法、装置、设备及存储介质,可实现简单、错误率低、高扩展以及维护成本低的对接到第三方平台。
本发明提供了一种第三方平台对接实现方法,包括:
通过预设的约定标准,对输入的配置信息进行预编译,以输出编译文件;其中,所述配置信息包括预定义的标记以及与每个标记对应的内容;所述标记用于区分在调用第三方平台的API接口时对应的请求头、URL参数、请求主体、变量、表达式以及函数;
当用户调用第三方平台的API接口时,传入编译好的编译文件给执行引擎并初始化上下文;
通过所述执行引擎以预定义流程解析并执行所述编译文件,输出标准的HTTP请求至所述第三方平台,以实现调用第三方平台的API接口。
优选地,还包括:
通过执行引擎接收第三方平台通过回调方式返回的调用结果,并将所述调用结果返回给所述客户端。
优选地,所述通过预设的约定标准,对输入的配置信息进行预编译,以输出编译文件具体包括:
通过标记区分配置信息在调用第三方平台的接口时对应的请求头,URL参数,请求主体,变量、表达式以及函数
对各个标记中的内容进行编译,并在编译完成后以规范的数据结构存储在生成的编译文件中;
将编译通过后的编辑文件序列化后生成的JAVA对象以二进制文件存储并输出。
优选地,所述通过执行引擎以预定义流程解析并执行所述编译文件,输出标准的HTTP请求至所述第三方平台,具体包括:
当所述执行引擎读取到用于表示请求头的标记时,将该标记下的内容设置为请求头信息;
当所述执行引擎读取到用于表示URL参数的标记时,将该标记下的内容根据列表中存储的数据递归输出,以生成URL参数;
至少根据所述请求头信息以及所述输出列表输出标准的HTTP请求至所述第三方平台。
优选地,所述当所述执行引擎读取到用于表示URL参数的标记时,将该标记下的内容根据列表中存储的数据递归输出,以生成URL参数具体包括:
当读取到的列表的数据为一串字符时,输出字符串到缓冲中;
当读取到列表的数据为一个表达式时,调用表达式处理流程,在上下文中查找表达式中引用的变量,输出所述变量到缓冲中;
当读取到列表的数据为一个函数时,调用函数处理流程,在编译引擎中内置的函数库中找到所述函数,并调用所述函数进行运算,将运算结果输出到缓冲中;
在遍历列表中的数据后,将缓冲中的数据统一输出作为请求第三方平台的API接口时的URL参数。
优选地,所述当用户调用第三方平台的API接口时,传入编译好的编辑文件给执行引擎并初始化上下文具体为:
当用户调用第三方平台的API接口时,传入编译好的编辑文件给执行引擎并初始化上下文;其中,将接口调用地址、调用接口时的token传入上下文进行初始化供表达式引用。
优选地,以[head]、[param]、[body]、[map]标记来区分在调用第三方平台的接口时对应的请求头,URL参数,请求主体,变量;表达式约定${}可引用任意变量,函数约定为md5(args);其中,md5为函数名,args变量;其中,[param]标记与[body]标记至少出现一个。
本发明实施例还提供了一种第三方平台对接实现装置,包括:
编译单元,用于通过预设的约定标准,对输入的配置信息进行预编译,以输出编译文件;其中,所述配置信息包括预定义的标记以及与每个标记对应的内容;所述标记用于区分在调用第三方平台的API接口时对应的请求头、URL参数、请求主体、变量、表达式以及函数;
编辑文件传入单元,用于当用户调用第三方平台的API接口时,传入编译好的编译文件给执行引擎并初始化上下文;
执行单元,用于通过所述执行引擎以预定义流程解析并执行所述编译文件,输出标准的HTTP请求至所述第三方平台,以实现调用第三方平台的API接口。
本发明实施例还提供了一种第三方平台对接实现设备,包括处理器、存储器以及存储在所述存储器中且被配置为由所述处理器执行的计算机程序,所述处理器执行所述计算机程序时实现如上述的第三方平台对接实现方法。
本发明实施例还提供了一种计算机可读存储介质,所述计算机可读存储介质包括存储的计算机程序,其中,在所述计算机程序运行时控制所述计算机可读存储介质所在设备执行如上述的第三方平台对接实现方法。
综上所述,本发明实施例提供的第三方平台对接实现方法、装置、设备以及计算机可读存储介质,通过编译引擎对符合预设的约定标准的配置信息进行编辑生成编译文件,再由执行引擎根据预定义流程解析执行所述编译文件,输出标准的HTTP请求至所述第三方平台,以实现调用第三方平台的API接口。本实施例屏弃了编写JAVA代码的对接方式采用线上配置的方式来调用API接口,并具有如下优点:
1、对接快(只需简单学习语义即可对接API接口,以前技术需要5个小时左右现在只需1个小时左右);
2、热布署(配置完成后即可使用无需重启服务器);
3、错误率低;
4、松耦合,高扩展(与第三方API接口关联减少);
5、提供52种函数以支撑第三方API接口的多样性(接口覆盖率达到95%);
6、维护成本低。
附图说明
为了更清楚地说明本发明的技术方案,下面将对实施方式中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施方式,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是现有技术提供的与第三方服务实现对接的示意图。
图2是本发明第一实施例提供的第三方平台对接实现方法的流程示意图。
图3是本发明第一实施例提供的函数结构示意图。
图4是本发明第二实施例提供的第三方平台对接实现装置的结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
请参阅图2,本发明第一实施例提供了一种第三方平台对接实现方法,其可由第三方平台对接实现设备(以下简称设备)来执行,并至少包括如下步骤:
S101,通过预设的约定标准,对输入的配置信息进行预编译,以输出编译文件;其中,所述配置信息包括预定义的标记以及与每个标记对应的内容;所述标记用于区分在调用第三方平台的API接口时对应的请求头、URL参数、请求主体、变量、表达式以及函数。
在本实施例中,所述设备可为笔记本电脑、台式计算机以及其他具有计算能力的设备,本发明不做具体显示。
在本实施例中,通过预先制定的一套语义标准、函数、关键字约定,所述设备内的编译引擎可对用户输入的配置信息(可以是一个文件或一串字符)进行预编译输出编译文件。其中,根据预设的约定标准,配置信息根据标识分为:
1)[head]:请求头
2)[body]:使用post请求时对应请求主体
3)[param]:URL参数
4)[map]:变量,可用于其它函数引用
5)表达式、函数
其中[param]与[body]至少出现一个;其它标记为可选。
其中:表达式约定${}可引用任意变量,函数约定为md5(args)。
当然,需要说明的是,标记的具体形式和内容可以根据实际的需要进行更改,而不仅限于上述的形式,这些方案均在本发明的保护范围之内。
函数结构如图3所示。
编译引擎中内置函数如下表所示:
编译通过后的编译文件序列化后生成的JAVA对象以二进制文件存储,其存储结构为:
object{
head:[0,….]为一个列表,列表内容可以是一个表达式或函数对应[head]标签
param:[0,….]为一个列表,列表内容可以是一个表达式或函数对应[param]
body:[0….]为一个列表,列表内容可以是一个表达式或函数对应[body]标签
variables:为一个列表,列表内容可以是一个表达式或函数对应[body]标签
requestMethod:请求方式可以是GET,POST,STREAM,MIME
statusField:””为一个字符接口返回的状态字段
successValue:””为一个字符接口返回的成功状态值
....
}
以下以一个具体的例子来详述本实施例的编译过程:
例1:假设用户输入的配置信息为:
[head]
Content-Type:text/html;charset=UTF-8
[param]
username=${userName}&password=${password}&sign=md5(abc)
则表示请求头的内容为:
Content-Type:text/html;charset=UTF-8;
URL参数的内容为:
username=${userName}&password=${password}&sign=md5(abc)。
此时,根据规范的数据结构生成的编译文件为:
object{
head:{“Content-Type”:list[0]=”text/html;charset=UTF-8”},
param:list[0]=“username=”
list[1]=expression{expression:”${username}”,name:”userName”}
list[2]=”&password=”
list[3]=expression{expression:”${password}”,name:”password”}
list[4]=“&sign=”
list[5]=function{funName:”md5”,valueExpression:”md5(abc)”}
body:null
variables:null
requestMethod:”GET”
statusFied:”status”
successValue
}
S102,当用户调用第三方平台的API接口时,传入编译好的编译文件给执行引擎并初始化上下文。
在本实施例中,当用户调用第三方平台的API接口,传入编译好的编辑文件给执行引擎并初始化上下文。例如可以将接口调用地址,调用接口时的token传入上下文进行初始化供表达式引用。
S103,通过所述执行引擎以预定义流程解析并执行所述编译文件,输出标准的HTTP请求至所述第三方平台,以实现调用第三方平台的API接口。
具体地,步骤S103包括:
首先,当所述执行引擎读取到用于表示请求头的标记时,将该标记下的内容设置为请求头信息。
然后,当所述执行引擎读取到用于表示URL参数的标记时,将该标记下的内容根据列表中存储的数据递归输出,以生成URL参数。
其中,具体地:
当读取到的列表的数据为一串字符时,输出字符串到缓冲中;
当读取到列表的数据为一个表达式时,调用表达式处理流程,在执行引擎上下文中查找表达式中引用的变量,输出所述变量到缓冲中;
当读取到列表的数据为一个函数时,调用函数处理流程,在编译引擎中内置的函数库中找到所述函数,并调用所述函数进行运算,将运算结果输出到缓冲中;
在遍历列表中的数据后,将缓冲中的数据统一输出作为请求第三方平台的API接口时的URL参数。
以上述提到的例1进行说明:
执行引擎读取到head时,设置请求头信息为Context-Type=text/html;charset=UTF-8;
读取到[param]为一个列表时,根据列表中存储的数据递归输出。
其中,当读取到list[0]为一串字符时,直接输出username=到缓冲中;
读取到list[1]为一个表达式时,调用表达式处理流程,在上下文中查找表达式中引用的变量,输出所述变量到缓冲中。如初始上下文时传入username为test则输出test到缓冲中;
读取到list[2]为一串字符时直接输出&password=到缓冲中;
读取到list[3]为一个表达式时,调用表达式处理流程,在上下文中查找表达式中引用的变量,输出所述变量到缓冲中。如初始上下文时传入password为123则输出123到缓冲中;
读取到list[4]为一串字符时直接输出&sign=到缓冲中;
读取到list[5]为一个函数时,调用函数处理流程,在编译引擎中内置的函数库中找到所述函数,并调用所述函数进行运算,将运算结果输出到缓冲中;这里调用了一个md5函数会输出md5加密后的32位字符串900150983cd24fb0d6963f7d28e17f72到缓冲中;
至此解析执行结束再把缓冲中的数据统一输出作为请求API接口时的URL参数,即:
username=test&password=123&sign=900150983cd24fb0d6963f7d28e17f72。
最后,至少根据所述请求头信息以及生成的URL参数输出标准的HTTP请求至所述第三方平台。
在本发明实施例中,在得到请求头信息以及所述URL参数后,即可以输出标准的HTTP请求至所述第三方平台,实现调用第三方API接口。第三方平台再通过回调方式通知执行引擎调用结果,执行引擎解析调用结果之后返回给客户端。
综上所述,本发明实施例提供的第三方平台对接实现方法,通过编译引擎对符合预设的约定标准的配置信息进行编辑生成编译文件,再由执行引擎根据预定义流程解析执行所述编译文件,输出标准的HTTP请求至所述第三方平台,以实现调用第三方平台的API接口。本实施例屏弃了编写JAVA代码的对接方式采用线上配置的方式来调用API接口,并具有如下优点:
1、对接快(只需简单学习语义即可对接API接口,以前技术需要5个小时左右现在只需1个小时左右);
2、热布署(配置完成后即可使用无需重启服务器);
3、错误率低;
4、松耦合,高扩展(与第三方API接口关联减少);
5、提供52种函数以支撑第三方API接口的多样性(接口覆盖率达到95%);
6、维护成本低。
请参阅图4,本发明第二实施例提供了一种第三方平台对接实现装置,其包括:
编译单元10,用于通过预设的约定标准,对输入的配置信息进行预编译,以输出编译文件;其中,所述配置信息包括预定义的标记以及与每个标记对应的内容;所述标记用于区分在调用第三方平台的API接口时对应的请求头、URL参数、请求主体、变量、表达式以及函数;
编辑文件传入单元20,用于当用户调用第三方平台的API接口时,传入编译好的编译文件给执行引擎并初始化上下文;
执行单元30,用于通过所述执行引擎以预定义流程解析并执行所述编译文件,输出标准的HTTP请求至所述第三方平台,以实现调用第三方平台的API接口。
优选地,还包括:
调用结果接收单元,用于通过执行引擎接收第三方平台通过回调方式返回的调用结果,并将所述调用结果返回给所述客户端。
优选地,所述编译单元10具体包括:
标记模块,用于通过标记区分配置信息在调用第三方平台的接口时对应的请求头,URL参数,请求主体,变量,表达式以及函数;
编译模块,用于对各个标记中的内容进行编译,并在编译完成后以规范的数据结构存储在生成的编译文件中;
输出模块,用于将编译通过后的编辑文件序列化后生成的JAVA对象以二进制文件存储并输出。
优选地,所述执行单元30具体包括:
请求头读取模块,用于当所述执行引擎读取到用于表示请求头的标记时,将该标记下的内容设置为请求头信息;
URL参数生成模块,用于当所述执行引擎读取到用于表示URL参数的标记时,将该标记下的内容根据列表中存储的数据递归输出,以生成URL参数;
HTTP请求输出模块,用于至少根据所述请求头信息以及生成的URL参数输出标准的HTTP请求至所述第三方平台。
优选地,URL参数生成模块具体用于:
当读取到的列表的数据为一串字符时,输出字符串到缓冲中;
当读取到列表的数据为一个表达式时,调用表达式处理流程,在上下文中查找表达式中引用的变量,输出所述变量到缓冲中;
当读取到列表的数据为一个函数时,调用函数处理流程,在编译引擎中内置的函数库中找到所述函数,并调用所述函数进行运算,将运算结果输出到缓冲中;
在遍历列表中的数据后,将缓冲中的数据统一输出作为请求第三方平台的API接口时的URL参数。
优选地,所述编辑文件传入单元20具体用于:
当用户调用第三方平台的API接口时,传入编译好的编辑文件给执行引擎并初始化上下文;其中,将接口调用地址、调用接口时的token传入上下文进行初始化供表达式引用。
优选地,以[head]、[param]、[body]、[map]标记来区分在调用第三方平台的接口时对应的请求头,URL参数,请求主体,变量;表达式约定${}可引用任意变量,函数约定为md5(args);其中,md5为函数名,args变量;其中,[param]标记与[body]标记至少出现一个。
本发明第三实施例提供的第三方平台对接实现设备。该实施例的第三方平台对接实现设备包括:处理器、存储器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,例如第三方平台对接实现程序。所述处理器执行所述计算机程序时实现上述各个第三方平台对接实现方法实施例中的步骤,例如图1所示的步骤S101。或者,所述处理器执行所述计算机程序时实现上述各装置实施例中各模块/单元的功能0。
示例性的,所述计算机程序可以被分割成一个或多个模块/单元,所述一个或者多个模块/单元被存储在所述存储器中,并由所述处理器执行,以完成本发明。所述一个或多个模块/单元可以是能够完成特定功能的一系列计算机程序指令段,该指令段用于描述所述计算机程序在所述第三方平台对接实现设备中的执行过程。
所述第三方平台对接实现设备可以是桌上型计算机、笔记本、掌上电脑及云端服务器等计算设备。所述第三方平台对接实现设备可包括,但不仅限于,处理器、存储器。本领域技术人员可以理解,上述部件仅仅是第三方平台对接实现设备的示例,并不构成对第三方平台对接实现设备的限定,可以包括比上述更多或更少的部件,或者组合某些部件,或者不同的部件,例如所述第三方平台对接实现设备还可以包括输入输出设备、网络接入设备、总线等。
所称处理器可以是中央处理单元(Central Processing Unit,CPU),还可以是其他通用处理器、数字信号处理器(Digital Signal Processor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现成可编程门阵列(Field-Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等,所述处理器是所述第三方平台对接实现设备的控制中心,利用各种接口和线路连接整个第三方平台对接实现设备的各个部分。
所述存储器可用于存储所述计算机程序和/或模块,所述处理器通过运行或执行存储在所述存储器内的计算机程序和/或模块,以及调用存储在存储器内的数据,实现所述第三方平台对接实现设备的各种功能。所述存储器可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序(比如声音播放功能、图像播放功能等)等;存储数据区可存储根据手机的使用所创建的数据(比如音频数据、电话本等)等。此外,存储器可以包括高速随机存取存储器,还可以包括非易失性存储器,例如硬盘、内存、插接式硬盘,智能存储卡(Smart Media Card,SMC),安全数字(Secure Digital,SD)卡,闪存卡(Flash Card)、至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。
其中,所述第三方平台对接实现设备集成的模块/单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明实现上述实施例方法中的全部或部分流程,也可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一计算机可读存储介质中,该计算机程序在被处理器执行时,可实现上述各个方法实施例的步骤。其中,所述计算机程序包括计算机程序代码,所述计算机程序代码可以为源代码形式、对象代码形式、可执行文件或某些中间形式等。所述计算机可读介质可以包括:能够携带所述计算机程序代码的任何实体或装置、记录介质、U盘、移动硬盘、磁碟、光盘、计算机存储器、只读存储器(ROM,Read-OnlyMemory)、随机存取存储器(RAM,Random Access Memory)、电载波信号、电信信号以及软件分发介质等。需要说明的是,所述计算机可读介质包含的内容可以根据司法管辖区内立法和专利实践的要求进行适当的增减,例如在某些司法管辖区,根据立法和专利实践,计算机可读介质不包括电载波信号和电信信号。
需说明的是,以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。另外,本发明提供的装置实施例附图中,模块之间的连接关系表示它们之间具有通信连接,具体可以实现为一条或多条通信总线或信号线。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。
以上所述是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也视为本发明的保护范围。