一种接口调用方法、装置、计算机设备及存储介质与流程

文档序号:25543479发布日期:2021-06-18 20:40
一种接口调用方法、装置、计算机设备及存储介质与流程

本申请实施例涉及软件开发领域,具体涉及一种接口调用方法、装置、计算机设备及存储介质。



背景技术:

远程过程调用(remoteproducercall,rpc)是基于特定的计算机通信协议,把本地的办法调用透明转化为跨机器的调用,是分布式服务的基本功能。远程过程调用总是由客户端对服务器发出一个请求,服务端根据请求执行结果并返回给客户端,以下可将其称为远程调用。

远程调用通常通过对接口的调用实现透明转化跨机器的调用本地办法。然而现有的接口调用方法,通常包括如下步骤:获取请求后台服务的代理对象;组装二进制协议对应的请求结构体对象;发起异步请求;处理调用异常,转换为json对象。在对现有技术的研究和实践过程中,本申请实施例的发明人发现,现有的方法暴露过多调用细节,同时这种代码未分离接口逻辑和通用逻辑,使得大量代码在调用过程中重复书写,调用代码的复用性较差,开发效率低下。



技术实现要素:

本申请实施例提供一种接口调用方法、装置、计算机设备及存储介质,通过将调用后台接口代码封装为插件,使该调用后台接口代码可重复利用,实现开发效率的提高,减少代码冗余同时提升项目代码维护性。

第一方面,本申请实施例提供一种接口调用方法,包括:

接收用户的调用请求信息;

在服务层校验所述调用请求信息合法性;

将所述调用请求信息发送至代理层

在所述代理层,根据所述调用请求信息配置数据对象;

根据所述数据对象调用预设封装插件;

获取预设封装插件的执行结果;

将所述执行结果发送至服务层并输出。

一种可能的设计中,在所述根据所述数据对象调用预设封装插件之前,所述方法还包括:

根据所述数据对象确定待处理业务的业务类型;

根据所述业务类型确定待调用接口;

根据所述待调用接口获取多个调用组件模板;

根据所述多个调用组件模板生成所述预设封装插件。

一种可能的设计中,在所述根据所述待调用接口获取多个调用组件模板之前,所述方法还包括:

根据所述业务类型构建调用组件模板。

一种可能的设计中,在所述根据所述数据对象确定待处理业务的业务类型后,所述方法还包括:

判断所述业务类型是否发生变化;

当所述业务类型发生变化时,确定变化的业务类型;

根据所述变化的业务类型确定待更新的调用组件;

将所述待更新的调用组件更新到预设封装插件。

一种可能的设计中,所述预设封装插件设置在所述代理层。

一种可能的设计中,所述在所述代理层,根据所述调用请求信息配置数据对象,包括:

在所述代理层,根据所述调用请求信息配置业务名、请求结构体和响应结构体;

根据所述业务名、请求结构体和响应结构体生成所述数据对象,所述数据对象用于请求或响应所述调用请求信息时承载数据。

一种可能的设计中,所述根据所述数据对象调用预设封装插件,获取所述预设封装插件的执行结果,包括:

根据所述数据对象和所述预设封装插件将所述封装的调用请求信息组装为请求结构体;

根据所述预设封装插件将所述请求结构体发送到服务器;

在所述代理层,根据业务名和电信终端服务的关联关系,调用接口协议服务代理到所述电信终端服务;

根据所述预设封装插件获取所述服务器基于所述请求结构体生成的响应结构体;

根据所述预设封装插件解析所述响应结构体,并将所述响应结构体拆解为脚本对象,将所述脚本对象作为所述执行结果。

一种可能的设计中,所述方法还包括:

在所述服务层,根据业务类型设置各调用接口的业务逻辑。

一种可能的设计中,所述接口调用的执行结果保存在区块链节点上。

第二方面中,本申请实施例还提供一种接口调用装置,具有实现对应于上述接口调用方法的功能。所述功能可以通过硬件实现,也可以通过硬件执行相应的软件实现。硬件或软件包括一个或多个与上述功能相对应的模块,所述模块可以是软件和/或硬件。

一种可能的设计中,所述接口调用装置包括:

输入输出模块,用于接收用户的调用请求信息;

校验模块,用于在服务层校验所述输入输出模块接收的所述调用请求信息合法性;

所述输入输出模块还用于将所述调用请求信息发送至代理层;

处理模块,用于在所述代理层,根据所述调用请求信息配置数据对象;根据所述数据对象调用预设封装插件;通过所述输入输出模块获取预设封装插件的执行结果;通过所述输入输出模块将所述执行结果发送至服务层并输出;

一种可能的设计中,所述处理模块在所述根据所述数据对象调用预设封装插件之前,还用于:

根据所述数据对象确定待处理业务的业务类型;根据所述待处理业务的业务类型确定待调用接口;

根据所述待调用接口获取多个调用组件模板;

根据多个调用组件模板生成所述预设封装插件。

一种可能的设计中,所述处理模块在所述根据所述待调用接口获取多个调用组件模板之前,还用于:

根据所述业务类型构建调用组件模板。

一种可能的设计中,所述处理模块在所述根据所述数据对象确定待处理业务的业务类型之后,还用于:

判断所述业务类型是否发生变化;

当所述业务类型发生变化时,确定变化的业务类型;

根据所述变化的业务类型确定待更新的调用组件;

将所述待更新的调用组件更新到预设封装插件。

一种可能的设计中,所述预设封装插件设置在所述代理层。

一种可能的设计中,所述处理模块具体用于:

在所述代理层,根据所述经校验模块检验后合法的调用请求信息,配置业务名、请求结构体和响应结构体;

根据配置的业务名、请求结构体和响应结构体生成所述数据对象,所述数据对象用于请求或响应所述调用请求信息时承载数据。

一种可能的设计中,所述处理模块在所述根据所述数据对象调用预设封装插件之前,还用于:

根据所述数据对象生成预设封装插件。

一种可能的设计中,所述处理模块具体用于:

根据所述数据对象和所述预设封装插件将所述封装的调用请求信息组装为请求结构体;

根据所述预设封装插件将所述请求结构体发送到服务器;

在所述代理层,根据业务名和电信终端服务的关联关系,调用接口协议服务代理到所述电信终端服务;

根据所述预设封装插件获取所述服务器基于所述请求结构体生成的响应结构体;

根据所述预设封装插件解析所述响应结构体,并将所述响应结构体拆解为脚本对象,将所述脚本对象作为所述执行结果。

一种可能的设计中,所述处理模块还用于:

在所述服务层,根据业务类型设置各调用接口的业务逻辑。

一种可能的设计中,所述接口调用的执行结果保存在区块链节点上。

第三方面,本申请实施例提供了一种计算机设备,其包括至少一个连接的收发器、存储器和处理器,其中,所述存储器存储有应用程序,所述处理器用于运行所述存储器内的应用程序,以执行上述第一方面所述的方法。

第四方面,本申请实施例提供了一种计算机可读存储介质,其存储有多条指令,所述指令适于处理器进行加载,以执行上述各方面所述的接口调用方法。

与现有机制相比,本申请实施例在接收到用户的调用请求信息时,通过在服务层校验所述调用请求信息合法性,并将所述调用请求信息发送至代理层。在所述代理层,根据所述调用请求信息配置数据对象,然后根据所述数据对象调用预设封装插件,获取预设封装插件的执行结果,最终将所述执行结果发送至服务层并输出。该方案通过将接口调用代码封装为可多次利用的插件,使得调用细节被封装,实现通用逻辑和接口逻辑的解耦,减少代码冗余,同时该插件可重复利用以适应不同的开发环境,能够提升开发效率以及项目代码维护性。

附图说明

为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1a是本申请实施例提供的接口调用方法中分层模型的一种结构示意图;

图1b是本申请实施例中调用接口的一种目录结构示意图;

图2是本申请实施例提供的接口调用方法的一种流程图;

图3是本申请实施例提供的接口调用方法中不同业务类型生成预设封装插件的一种示意图;

图4是本申请实施例提供的接口调用方法中业务类型变更时生成预设封装插件的一种示意图;

图5是本申请实施例提供的接口调用方法中业务功能增加时生成预设封装插件的一种示意图;

图6是本申请实施例提供的接口调用方法中业务功能删除时生成预设封装插件的一种示意图;

图7是本申请实施例提供的接口调用方法中业务功能替换时生成预设封装插件的一种示意图;

图8是本申请实施例提供的接口调用方法中分布式系统应用于区块链系统的一种结构示意图

图9是本申请实施例提供的接口调用方法中区块链结构的一种示意图

图10是本申请实施例提供的接口调用装置的一种结构示意图;

图11是本申请实施例提供的计算机设备的一种结构示意图。

具体实施方式

本申请实施例的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的实施例能够以除了在这里图示或描述的内容以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或模块的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或模块,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或模块,本申请实施例中所出现的模块的划分,仅仅是一种逻辑上的划分,实际应用中实现时可以有另外的划分方式,例如多个模块可以结合成或集成在另一个系统中,或一些特征可以忽略,或不执行,另外,所显示的或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,模块之间的间接耦合或通信连接可以是电性或其他类似的形式,本申请实施例中均不作限定。并且,作为分离部件说明的模块或子模块可以是也可以不是物理上的分离,可以是也可以不是物理模块,或者可以分布到多个电路模块中,可以根据实际的需要选择其中的部分或全部模块来实现本申请实施例方案的目的。

本申请实施例提供一种接口调用方法、装置、计算机设备及存储介质。该方案可用于智能手机、个人计算机等用于调用后台服务接口的终端中,本申请实施例中的终端可以是区块链系统的节点。以下分别进行详细说明。

如图1a所示,为本申请实施例中的调用后台服务接口获取数据时的分层模型的一种结构示意图。该分层模型包括调用接口、服务层、代理层和代理服务。其中,调用接口是指前端平台和后台服务器之间的通信接口,调用接口可用于接收调用请求信息,这个行为通常在用户界面组件触发。服务层主要是校验参数合法性,向代理层传入合法的普通格式参数,获取结果。代理层定义接口形式(指定接口名与接口的请求结构体/响应结构体等对象),通过预设封装插件完成接口参数编码,解码响应参数,异常处理。此处的代理服务即指由服务器接收预设封装插件发送的调用请求信息,并根据所述调用请求信息执行调用相关业务的服务。以用户访问第三方小说网站为例,将图1a所示的分层模型应用于转码阅读器中,以将该第三方网站转换为访问小说业务。转码阅读器可基于hippy平台构建,当转码阅读器用于访问小说业务时,可通过该转码阅读器与后台的服务端进行通信。图1b为转码阅读器使用的调用接口的一种目录结构。

在现有机制中,接口调用方法通常包括如下步骤:获取请求后台服务的代理对象;组装二进制协议对应的请求结构体对象;发起异步请求;处理调用异常,转换为json对象。这种方案暴露过多调用细节,对调用方法并未进行很好的封装。同时在现在的技术侧中,前后台通信接口一般的业务逻辑是实现数据的增加、删除、修改和查询,而通用逻辑为打通底层通信链路、接口的请求结构体的组装、将接口响应结构体拆解为普通对象、异常处理等等。而现有机制并未分离接口逻辑和通用逻辑,使得通用逻辑的这些大量代码在调用过程中重复书写,产生冗余代码,维护性较差。

为解决上述技术问题,本申请实施例采用下述方案:

通过分层方式,将通用逻辑和业务逻辑隔离,在所述服务层,根据业务类型设置各调用接口的业务逻辑,关注服务层的业务逻辑。将通用逻辑从服务层抽离出来并放在代理层,能够避免通用逻辑被重复书写,同时也能够复用通用逻辑,为业务逻辑提供便利。具体来说,在接收到用户的调用请求信息时,在服务层校验所述调用请求信息合法性,并将所述调用请求信息发送至代理层。在所述代理层,根据所述调用请求信息配置数据对象,然后根据所述数据对象调用预设封装插件,获取预设封装插件的执行结果,最终将所述执行结果发送至服务层,并进行输出。该方案通过将接口调用代码封装为可多次利用的插件,使得调用细节被封装,同时该插件可重复利用以适应不同的开发环境,能够提升开发效率。

本申请实施例不对多个分层模型的实现方式和部署方式做出限定。

一些实施方式中,可先开发调用接口、服务层、代理层以及代理服务的相关代码,然后将相关代码配置为相对独立的层级结构。在接口调用方法的过程中,调用接口用以接收调用请求信息,服务层用以校验所述调用请求信息的合法性,代理层用以定义接口形式并获取执行结果,代理服务用以执行所述调用请求信息包含的调用服务。

如图2所示,在完成分层模型的部署后,本申请实施例中的接口调用方法的具体流程可以如下:

201、接收用户的调用请求信息。

其中,该调用请求信息一般为用户通过用户界面(userinterface,ui)组件触发。在一些实施方式中,当用户在具体的,用户可在用户界面组件触发调用请求行为,该调用请求行为用于生成调用请求信息。

例如,用户在移动终端的用户界面访问小说阅读网页如红袖添香。当用户点击收藏按钮,移动终端通过点击行为接收调用请求信息。该接收的调用请求信息包含转码业务,服务器接收到所述调用请求信息后执行转码业务,将红袖添香页面转换成移动终端模式,并发送至移动终端的服务层并进行输出。

一些实施方式中,调用请求信息可以包括通信协议的标识、应用版本号、序列化方式、保留字节、请求标识(identitydocument,id)等。

一些实施方式中,为了减少服务器在对应用终端的影响和改造成本,故在对数据的处理上选择了自描述的序列化方式。例如,在针对调用请求信息的处理上是将服务名、方法名、参数类型作为java对象的属性值后,再通过hessian(一种二进制序列化方式)序列化。针对与属性有关系的数据,例如作为java对象的属性值:服务名,方法名,参数类型等数据,进行序列化。从而,通过这种自描述性的序列化方式将java对象的属性值转化为二进制流。

例如,当用户浏览器页面点击进入微博链接时,此时触发调用微博应用的请求,通信协议的标识为0xj,代表此时的通信协议为数据代码(javacryptographyextension,jce)协议,该jce协议为二进制、自定义协议;应用版本号为01,代表当前请求调用的应用版本为01版本;请求标识固定为01,对应之后的响应信息;调用请求信息中的02字段,代表对当前请求信息的序列化方式为hessian02。

202、在服务层校验所述调用请求信息合法性。

其中,终端在接收到所述调用请求信息后,将会在服务层对这些信息进行校验,以确保接收的调用请求信息为合法信息,从而避免在之后的调用流程中出现执行错误。当校验结果表明所述调用请求信息非法时,服务层在用户界面生成调用错误信息,并重新接收调用请求信息。例如,调用请求信息中的请求id必须仅包含数字,且所述请求id长度需符合与请求id对应的协议规定。当服务层校验发现请求id中包含数字以外的字符如大/小写字母时,校验结果将表明该调用请求信息为非法的调用请求信息,服务层生成调用错误信息至用户界面。

一些实施方式中,所述方法还包括:

在所述服务层,根据业务类型设置各调用接口的业务逻辑。

通过将调用接口的业务逻辑和通用逻辑分层隔离,使得在开发软件时只需要关心业务逻辑,有利于项目的维护和接口的开发。

203、将所述调用请求信息发送至代理层。

具体的,在服务层校验所述调用请求信息合法性之后,所述调用请求信息将被发送至代理层,以供代理层根据所述调用请求信息执行后续操作。

例如,当用户在微博界面点击音乐链接时,此时触发启动音乐应用的调用请求。所述调用请求信息将经过服务层校验。当校验结果表明所述调用请求信息合法时,所述调用请求信息将会被发送至代理层。

204、在所述代理层,根据所述调用请求信息配置数据对象。

其中,所述数据对象用于请求或响应所述调用请求信息时承载数据。请求结构体用于在请求时承载数据,响应结构体用于在响应时承载数据。例如,当访问请求为请求获取南山区地图时,会触发服务器调用对应的业务接口,那么,就回生成对应该业务接口的调用请求信息,在响应结构体中承载用户获取南山区地图所请求的参数、以及要返回给用户的南山区地图的数据,显示南山区地图所需要的网络地址、路径字段、结构体等数据。

一些实施方式中,所述数据对象为代理层所生成的json格式的数据对象,用以传递给预设封装插件,从而对预设封装插件进行初始化。其中,代理层通过生成json格式的数据对象,能够将代码打包为独立的文件,使得在代码调试与维护时更见简便,提升代码的可读性。在将所述调用请求信息发送至代理层后,代理层将根据所述调用请求信息配置数据对象。具体的,在代理层,在接收到合法的调用请求信息后,配置业务名、请求结构体和响应结构体,并根据配置的业务名、请求结构体和响应结构体生成json格式的数据对象。由于数据对象为json格式,这样,就可以通过json格式的数据对象将业务数据转换为json格式的数据返回给用户所在的终端。

例如,当代理层在接收到即时通讯工具启动地图的调用请求信息后,所述代理层将会根据所述调用请求信息配置业务名为地图,并根据启动地图这一调用请求信息配置请求结构体和响应结构体。最终代理层将生成与启动地图对应的json格式的数据对象。

205、根据所述数据对象调用预设封装插件。

其中,所述预设封装插件设置在代理层。

一些实施方式中,所述根据所述数据对象调用预设封装插件,包括:

根据所述数据对象和所述预设封装插件将所述封装的调用请求信息组装为请求结构体;

根据所述预设封装插件将所述请求结构体发送到服务器;

在所述代理层,根据业务名和电信终端服务的关联关系,调用接口协议服务代理到所述电信终端服务;

根据所述预设封装插件获取所述服务器基于所述请求结构体生成的响应结构体;

根据所述预设封装插件解析所述响应结构体,并将所述响应结构体拆解为脚本对象,将所述脚本对象作为所述执行结果。

例如,预设封装插件为无线统一协议(wirelessuni-protocol,wup)插件时,通过业务名调用wup服务代理到微服务架构(totalapplicationframework,taf)服务,获取到数据后,把响应结构体拆解为普通js对象。通过wup-proxy插件,服务层就可以拿到这个普通js对象的中间结果。通信接口是基于jce协议,jce协议是taf框架中最底层的部分。每个通信接口都定义基于jce协议的请求结构体和响应结构体。调用wup服务是指业务提供一个系列接口的taf服务,平台层搭建一个wup基础服务,在wup基础服务的配置中设置业务名和taf服务的关联关系,前端通过业务名和wup基础服务被代理到业务的taf服务。其中,taf服务用于提供业务处理线程类,以统计业务服务上报的各种调用信息。

另一些实施方式中,在调用预设封装插件之前,还应根据所述数据对象生成预设封装插件。具体可表现为,代理层根据所述数据对象确定所述调用请求信息对应的待处理业务的业务类型。得到待处理业务的业务类型后,根据所述待处理业务的业务类型确定与所述业务类型对应待调用接口,以及与所述待调用接口对应的功能。所述代理层根据所述待调用接口所需的功能获取调用组件模板,最终将多个调用组件模板组装生成预设封装插件。可选的,调用组件模板为根据业务类型提前构建得到。

具体的,根据业务类型对应所需的功能可提前构建调用组件模板池。在调用组件模板池中,对应不同的功能,构建有不同的调用组件模板即组件a~组件h,均为调用组件模板。根据不同的待处理业务类型,获取实现该业务类型所需包含的组件,并将所述组件生成预设封装插件。

例如,业务类型与组件模板的对应关系可如下表1所示。

表1

参照表1,可得到如下对应关系:当业务类型为业务1时,则与业务1所对应的预设封装插件包含有组件a、组件b、组件c和组件d,将其组装从而生成业务1的预设封装插件;当业务类型为业务2时,与业务2相对应的预设封装插件包含有组件c、组件e、组件f和组件h,将所述组件组装从而生成业务2的预设封装插件。

在一些实施方式中,当待处理业务的业务类型发生变化时,所述预设封装插件应随之变化以适应调用需求,具体可表现为:在根据数据对象确定待处理业务的业务类型后,对所述业务类型进行判断,确认所述业务类型是否发生变化。当所述业务类型发生变化时,确定变化后的业务类型,并根据所述变化后的业务类型确定待更新的调用组件。最终将所述待更新的调用组件更新到预设封装插件中。

206、获取预设封装插件的执行结果。

其中,在得到代理层配置完成的数据对象后,预设封装插件的具体执行过程包含:根据所述数据对象,即代理层配置接口的请求结构体、响应结构体和业务名并根据以上生成的json格式数据对象封装所述调用请求信息,并将封装的调用请求信息组装为请求结构体;将组装完成的请求结构体通过所述业务名代理到代理服务,最终获取数据即执行完毕后所发送的响应结构体,并对接收的响应结构体进行拆解,得到最终执行结果,传递给代理层。代理层最终获取预设封装插件的执行结果。这里的代理服务即可以理解为由服务器执行调用请求信息中包含的业务类型。其中,信息传输基于jce协议,jce协议是一种基于一种二进制的自定义协议。该协议为框架中最底层的部分,基于jce协议,每个接口都会定义请求结构体和响应结构体以执行调用过程。

207、将所述执行结果发送至服务层并输出。

代理层获取预设封装插件的最终执行结果后,将所述最终执行结果发送至服务层并输出,得到最终的执行结果。

例如,当调用请求信息请求启动音乐时,移动终端将所述调用请求信息通过预设封装插件发送至远端的服务器获取执行结果后,所述执行结果将发送至服务层。服务层获取最终的执行结果后进行输出,该输出结果最终即为启动音乐应用。

在一些实施例中,对于不同的业务类型,生成预设封装插件的示意图如图3所示。当获取得到业务类型为业务1时,与业务1对应需调用的组件有组件a、组件b、组件c与组件d,故从调用组件模板池中分别获取得到所述组件a、组件b、组件c与组件d,组装得到业务1的预设封装插件。当获取得到另一业务类型为业务2时,与业务2对应需调用的组件有组件e、组件f、组件h与组件c。由于针对两个不同的业务类型,对于其中实现相同功能的组件c,业务1与业务2均复用了组件c,因此减少了代码的重复开发。

在一些实施例中,当业务类型变更时,若业务所需实现的功能发生变化,此时业务类型的预设封装插件可能亦发生变化。如图4所示,业务类型为业务1,针对业务1所需实现的功能,业务1的预设封装插件包含有组件a、组件b、组件c与组件d。当业务类型变更为业务3时,此时业务所需的功能发生变化。针对业务3所需实现的功能,对应需调用的组件亦发生变化。为保证业务类型变更为业务3后不影响调用原有预设封装插件,对预设封装插件进行更新。具体来说,业务类型由业务1变更为业务3,确定变更后的业务3所需实现的功能,根据业务3所需实现的功能确定变更后的组件g、组件f、组件h与组件c。将变更后的组件g、组件f、组件h与组件c组装为业务3的预设封装插件。与业务1相较,当业务类型改变为业务3时,组件c在变更后的业务3中得到复用。

在一些实施例中,当版本变化时,例如当服务层所部署的服务版本升级时,对于同一业务类型在升级前后所能实现的功能有所不同,具体所实现的功能变化可包括功能的增加、功能的删除以及功能的替换等情况。具体的,业务类型为业务1,其所对应的预设封装插件包含有组件a、组件b、组件c与组件d。当版本升级时,业务1所需实现的功能可能发生增加、删除或者替换三种变化。

1)当增添业务1的功能时,如图5所示。

当业务1由第一版本升级为第二版本后,a为第一版本业务1的预设封装插件,b为第二版本业务1的预设封装插件。业务1增添数据处理功能,在预设封装插件中对应增加数据处理功能的组件。针对第一版本的业务1,实现调用功能时需要的组件包括组件a、组件b、组件c和组件d。由于第二版本的业务1增添有数据处理功能,为保证第二版本的业务1不因对数据处理功能部分的增添而影响调用原有预设封装插件,确保业务1仍能够正常调用预设封装插件,对预设封装插件进行更新。具体来说,业务1对应的功能发生变化,能够实现新的数据处理功能。确定升级后的业务1所需实现的数据处理功能,根据所述实现的数据处理功能确定需新增添的组件e,将所述新增添的组件e与原有预设封装插件组装,从而获取第二版本的业务1对应的预设封装插件。其中,更新后的预设封装插件中包含组件a、组件b、组件d、组件e和组件c。相较于版本升级前的业务1,版本升级后的业务1增添组件e。将组件e增添至业务1的预设封装插件中,得到版本升级后业务1的预设封装插件。

2)当删除业务1的功能时,如图6所示。

当业务1由第一版本升级为第二版本后,图6中a为第一版本业务1的预设封装插件,b为第二版本业务1预设封装插件。业务1不再需求实现语音功能,在预设封装插件中对应删除语音功能的组件。针对第一版本的业务1,实现调用功能时需要的组件包括组件a、组件b、组件c和组件d,由于第二版本的业务1删除语音功能,原有预设封装插件中的c组件实现语音功能。为保证第二版本的业务1不因对语音功能部分的删除而影响调用原有预设封装插件,确保业务1仍能够正常调用预设封装插件,对插件进行更新。具体来说,业务1对应的功能发生变化,不再实现语音功能。确定第二版本的业务1所删除的语音功能,根据所述删除的语音功能确定待删除的组件c,将原有预设封装插件中的组件c删除,从而获取升级后的业务1对应的预设封装插件。其中,升级后的业务1的预设封装插件中包含有组件a、组件b和组件d。相较于升级前的版本,版本升级后的业务1删除组件c。将组件c从原业务1的预设封装插件中删除,得到版本升级后的业务1的预设封装插件。

3)当替换业务1的功能时,如图7所示。

当业务1由第一版本升级为第二版本后,图7中a为第一版本业务1的预设封装插件,b为第二版本业务1的预设封装插件。对业务1的语音功能进行改进,在预设封装插件中对应替换语音功能的组件。针对第一版本的义务1,实现调用功能时需要的组件包括组件a、组件b、组件c和组件d,由于第二版本的业务1的语音功能发生改进,原有预设封装插件中的c组件实现语音功能。为保证升级后的业务1不因对语音功能部分的改进而影响调用原有预设封装插件,确保业务1仍能够正常调用预设封装插件,对插件进行更新。具体来说,业务1对应的功能相应发生变化,原有的预设封装插件中的语音功能进行改进。确定升级后的业务1改进的语音功能,根据所述待改进的语音功能确定待替换的组件c,将原有预设封装插件中的组件c替换为组件e,从而获取升级后的业务1对应的预设封装插件。在升级后的业务1的预设封装插件中,包含有组件a、组件b、组件d和组件e。相较于版本升级前的业务1,在版本升级后的业务1中,组件c被替换为组件e。将原业务1中的组件c替换为组件e,得到版本升级后的业务1的预设封装插件。

与现有机制相比,本申请实施例中在接收到用户的调用请求信息时,在服务层校验所述调用请求信息合法性,并将所述调用请求信息发送至代理层。在所述代理层,根据所述调用请求信息配置数据对象,然后根据所述数据对象调用预设封装插件,获取预设封装插件的执行结果,最终将所述执行结果发送至服务层,并进行输出。该方案通过将接口调用代码封装为可多次利用的插件,使得调用细节被封装,实现通用逻辑和接口逻辑的解耦,减少代码冗余,同时该插件可重复利用以适应不同的开发环境,能够提升开发效率以及项目代码维护性。

本申请实施例中的多个移动终端可基于通信协议形成系统。本申请实施例涉及的系统可以是由客户端、多个节点(接入网络中的任意形式的计算设备,如服务器、用户终端)通过网络通信的形式连接形成的分布式系统。

以分布式系统为区块链系统为例,参见图8,图8是本申请实施例提供的分布式系统800应用于区块链系统的一个可选的结构示意图,由多个节点(接入网络中的任意形式的计算设备,如服务器、用户终端)和客户端形成,节点之间形成组成的点对点(peertopeer,p2p)网络,p2p协议是一个运行在传输控制协议(transmissioncontrolprotocol,tcp)协议之上的应用层协议。在分布式系统中,任何机器如服务器、终端都可以加入而成为节点,节点包括硬件层、中间层、操作系统层和应用层。

参见图8示出的区块链系统中各节点的功能,涉及的功能包括:

1)路由,节点具有的基本功能,用于支持节点之间的通信。

节点除具有路由功能外,还可以具有以下功能:

2)应用,用于部署在区块链中,根据实际业务需求而实现特定业务,记录实现功能相关的数据形成记录数据,在记录数据中携带数字签名以表示任务数据的来源,将记录数据发送到区块链系统中的其他节点,供其他节点在验证记录数据来源以及完整性成功时,将记录数据添加到临时区块中。

例如,应用实现的业务包括:

2.1)服务层,用于校验从其他节点接收的调用请求信息的合法性;校验结果合法时发送到区块链系统中的其他节点;校验结果不合法时生成错误信息。

2.2)代理层,用于配置业务名、请求结构体和响应结构体,生成数据对象,将生成的数据对象发送到区块链系统中的其他节点。

2.3)预设封装插件,用于将接收的调用请求信息组装成请求结构体,并发送到服务器,接收服务器执行后的响应结构体并拆解生成json对象,获取最终调用请求的执行结果。

3)区块链,包括一系列按照产生的先后时间顺序相互接续的区块(block),新区块一旦加入到区块链中就不会再被移除,区块中记录了区块链系统中节点提交的记录数据。

参见图9,图9是本申请实施例提供的区块结构(blockstructure)一个可选的示意图,每个区块中包括本区块存储交易记录的哈希值(本区块的哈希值)、以及前一区块的哈希值,各区块通过哈希值连接形成区块链。另外,区块中还可以包括有区块生成时的时间戳等信息。区块链(blockchain),本质上是一个去中心化的数据库,是一串使用密码学方法相关联产生的数据块,每一个数据块中包含了相关的信息,用于验证其信息的有效性(防伪)和生成下一个区块。

图1a至图7中任一项所对应的实施例中所提及的任一技术特征也同样适用于本申请中的图10和图11所对应的实施例,后续类似之处不再赘述。

上面对本申请实施例中的一种接口调用方法进行了描述,下面对本申请实施中的执行上述接口调用方法的装置进行介绍。

参阅图10,如图10所示的一种接口调用装置的结构示意图,所述接口调用装置可应用于前端开发、调用后台接口等。本申请实施例中的装置能够实现对应于上述图2所对应的实施例中所执行的接口调用方法的步骤。装置实现的功能可以通过硬件实现,也可以通过硬件执行相应的软件实现。硬件或软件包括一个或多个与上述功能相对应的模块,所述模块可以是软件和/或硬件。所述装置可包括输入输出模块1001、校验模块1002和处理模块1003,该接口调用装置可执行如图2所对应的实施例中所执行的接口调用方法中的步骤,如下:

输入输出模块1001,用于接收用户的调用请求信息;

其中,该调用请求信息一般为用户通过用户界面组件触发。具体的,用户可在用户界面组件触发调用请求行为,该调用请求行为包含调用请求信息,输入输出模块1001接收所述调用请求信息。

一些实施方式中,调用请求信息可以包括通信协议的标识、应用版本号、请求标识、序列化方式、保留字节、请求id等。

校验模块1002,用于在服务层校验所述输入输出模块接收的所述调用请求信息合法性;

所述输入输出模块1001在校验模块1002校验所述输入输出模块接收的所述调用请求信息合法性后,还用于将所述调用请求信息发送至处理模块1003,以供处理模块1003根据所述调用请求信息执行后续操作。

处理模块1003,用于根据所述调用请求信息配置数据对象。具体的,所述处理模块1003在接收到经校验模块1002检验后合法的调用请求信息后,将会配置业务名、请求结构体和响应结构体,并根据配置的业务名、请求结构体和响应结构体生成json格式的数据对象。

其中,所述处理模块1003在所述根据所述数据对象调用预设封装插件之前,还用于根据所述数据对象生成预设封装插件。具体可表现为,所述处理模块1003根据所述数据对象确定所述调用请求信息对应的待处理业务的业务类型。得到待处理业务的业务类型后,根据所述待处理业务的业务类型确定待调用接口并根据待调用接口获取多个调用组件模板,最终将多个调用组件模板组装生成预设封装插件。其中,调用组件模板为根据业务类型提前构建得到。

所述处理模块1003在配置数据对象完成后,根据所述数据对象调用预设封装插件;通过所述输入输出模块1001获取预设封装插件的执行结果;通过所述输入输出模块1001将所述执行结果发送至服务层并输出。

在一些实施例中,所述处理模块1003在所述根据所述待调用接口获取多个调用组件模板之前,还用于根据所述业务类型构建调用组件模板。

其中,所述预设封装插件的具体执行过程包含:根据所述数据对象,即处理模块1003配置接口的请求结构体、响应结构体和业务名并根据以上生成的json格式数据对象封装所述调用请求信息,并将封装的调用请求信息组装为请求结构体;将组装完成的请求结构体通过业务名代理到代理服务,最终获取数据即执行完毕后所发送的响应结构体,并对接收的响应结构体进行拆解,得到最终执行结果,传递给处理模块1003。处理模块1003最终获取预设封装插件的执行结果。

与现有机制相比,本申请实施例中,所述处理模块1003在逻辑上从调用代码中抽离出预设封装插件。所述处理模块通过输入输出模块1001接收到调用请求信息时,通过预设封装插件将调用请求信息发送至服务器,并获取最终执行结果并通过输入输出单元进行输出。该方案通过将接口调用代码封装为可多次利用的插件,使得调用细节被封装,处理模块1003可重复利用该完成封装的预设封装插件,实现通用逻辑和接口逻辑的解耦,减少代码冗余,同时该插件可重复利用以适应不同的开发环境,能够提升开发效率以及项目代码维护性。

上面从模块化功能实体的角度对本申请实施例中的接口调用装置进行了描述,下面从硬件处理的角度分别对本申请实施例中的接口调用装置进行描述。本申请实施例还提供一种计算机设备,如图11所示,其示出了本申请所设计的计算机设备的结构示意图,具体来讲:

图11是本申请实施例提供的计算机设备的一种结构示意图,该计算机设备可因配置或性能不同而产生比较大的差异,可以包括一个或一个以上的处理器1103(例如,一个或一个以上中央处理器)和存储器1102(例如一个或一个以上海量存储设备)。其中,存储器1102可以是短暂存储或持久存储。存储在存储器1102的程序可以包括一个或一个以上模块(图示没标出),每个模块可以包括对服务器中的一系列指令操作。更进一步地,处理器1103可以设置为与存储器1102通信,在计算机设备上执行存储器1102中的一系列指令操作。

计算机设备还可以包括一个或一个以上输入输出单元1101;尽管未示出,计算机设备还可以包括一个或一个以上电源,一个或一个以上有线或无线网络接口,和/或,一个或一个以上操作系统,例如windowsserver,macosx,unix,linux,freebsd等等,在此不再赘述。上述实施例中由计算机设备所执行的步骤可以基于该图11所示的计算机设备结构。具体在本实施例中,计算机设备中的处理器1103会按照如下的指令,将一个或一个以上的应用程序的进程对应的可执行文件加载到存储器1102中,并由处理器1103来运行存储在存储器1102中的应用程序,从而实现各种功能,如下:

通过输入输出单元1101接收用户的调用请求信息;校验所述调用请求信息合法性;根据所述调用请求信息配置数据对象;根据所述数据对象调用预设封装插件;获取预设封装插件的执行结果;通过输入输出单元1101输出所述执行结果。

需要说明的是,在本申请实施例图10所示的装置可以具有图11所示的结构,实施例图10中的输入输出模块1001对应的实体设备可以为输入输出单元1101,实施例图10中的校验模块1002和处理模块1003对应的实体设备可以为处理器1103。输入输出单元1101和处理器1103能够实现前述对应该装置的装置实施例提供的输入输出模块1001和校验模块1002以及处理模块1003相同或相似的功能,存储器1102存储处理器执行上述接口调用方法时需要调用的计算机程序。

在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。

所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统,装置和模块的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。

在本申请实施例所提供的几个实施例中,应该理解到,所揭露的方法、装置和计算机设备,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述模块的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个模块或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或模块的间接耦合或通信连接,可以是电性,机械或其它的形式。

所述作为分离部件说明的模块可以是或者也可以不是物理上分开的,作为模块显示的部件可以是或者也可以不是物理模块,即可以位于一个地方,或者也可以分布到多个网络模块上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。

另外,在本申请实施例各个实施例中的各功能模块可以集成在一个处理模块中,也可以是各个模块单独物理存在,也可以两个或两个以上模块集成在一个模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。所述集成的模块如果以软件功能模块的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。

在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。

所述计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行所述计算机计算机程序时,全部或部分地产生按照本申请实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(dsl))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存储的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质,(例如,软盘、硬盘、磁带)、光介质(例如,dvd)、或者半导体介质(例如固态硬盘solidstatedisk(ssd))等。

以上对本申请实施例所提供的技术方案进行了详细介绍,本申请实施例中应用了具体个例对本申请实施例的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请实施例的方法及其核心思想;同时,对于本领域的一般技术人员,依据本申请实施例的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本申请实施例的限制。

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