开放接口的实现方法和装置与流程

文档序号:11279378阅读:294来源:国知局
开放接口的实现方法和装置与流程
本申请涉及网络通信
技术领域
,尤其涉及一种开放接口的实现方法和装置。
背景技术
:互联网中,开放平台将自己提供的服务封装成一系列的数据接口,发布给外部合作伙伴,外部合作伙伴可以利用这些开放接口使用开放平台的资源或扩展开放平台的功能,以支持自己的业务。开放接口通常是api(applicationprogramminginterface,应用程序编程接口)或者函数。现有技术中,外部合作伙伴将符合开放接口格式规范的调用请求发送给开放平台,开放平台的内部系统按照调用请求运行本地方法,将运行结果按照开放接口格式规范封装为对调用请求的响应,返回给外部合作伙伴。由于对调用请求的处理耦合在内部系统中,当开放接口的格式规范、功能等发生变化时,内部系统需要修改代码后重新发布,才能支持新的开放接口。这使得开放接口的升级速度受限于内部系统的开发和调试速度,不仅难以及时满足外部合作伙伴的要求,而且可能因开放接口的升级影响内部系统的运行稳定性。技术实现要素:有鉴于此,本申请提供一种开放接口的实现方法,每个开放接口对应于一个根据接口配置信息生成的执行模块,所述方法包括:接收向开放接口发起的调用请求;根据调用请求中的请求参数,由对应于被调用开放接口的执行模块通过与内部系统的交互得到执行结果;所述内部系统为实现被请求的功能的系统;根据所述执行结果回复对调用请求的响应。本申请还提供了一种开放接口的实现装置,每个开放接口对应于一个根据接口配置信息生成的执行模块,所述装置包括:调用请求接收单元,用于接收向开放接口发起的调用请求;执行结果获取单元,用于根据调用请求中的请求参数,由对应于被调用开放接口的执行模块通过与内部系统的交互得到执行结果;所述内部系统为实现被请求的功能的系统;调用请求响应单元,用于根据所述执行结果回复对调用请求的响应。由以上技术方案可见,本申请的实施例中,采用接口配置信息为每个开放接口生成一个执行模块,由被调用的执行模块根据调用请求与内部系统进行交互后得到执行结果,并根据执行结果对调用请求进行响应,使得在开放接口发生改变后,通过修改接口配置信息即可支持新的开放接口,而无需修改内部系统,加快了开放接口的实现速度,并且不会因开放接口改变影响内部系统的稳定性。附图说明图1是本申请实施例应用场景的第一种网络结构示例图;图2是本申请实施例应用场景的第二种网络结构示例图;图3是本申请实施例中一种开放接口的实现方法的流程图;图4是本申请应用示例的网络结构示意图;图5是本申请应用示例中openapi-sdk的结构示意图;图6是运行本申请实施例的设备的一种硬件结构图;图7是本申请实施例中一种开放接口的实现装置的逻辑结构图。具体实施方式本申请的实施例提出一种新的开放接口的实现方法,增加开放接口功能组件,由开放接口功能组件读取接口配置信息后生成对应于每个开放接口的执行模块;在收到调用请求后,由对应于被调用开放接口的执行模块通过与内部系统的交互完成被请求的功能,开放接口功能组件按照执行模块的执行结果回复调用响应。这样通过修改接口配置信息即可实现开放接口的更新,而无需修改内部系统的代码,使得开放接口与内部系统的实现解耦和,从而解决了现有技术中存在的问题。本申请的实施例中,调用方(即调用开放接口的一方)通过向开放接口功能组件提供的开放接口发起调用请求,来使用开放接口提供的一些功能,开放接口功能组件将功能的使用结果在对调用请求的响应中返回给调用方。这些功能由能够与开放接口功能组件进行信息交互的内部系统来实现。开放接口功能组件可以与一个到多个内部系统进行交互,每个内部系统可以实现一个到多个开放接口的功能。根据实际应用场景的需要,本申请实施例中的调用方可以是网络中不同的功能实体,以下举例说明。第一种应用场景示例的网络结构如图1所示,开放平台上开放接口功能组件向外部合作伙伴提供若干个开放接口,作为开放平台的外部接口,由外部合作伙伴直接调用;这种应用场景中开放接口的调用方是外部合作伙伴。第二种应用场景示例的网络结构如图2所示,开放平台的接口网关向外部合作伙伴提供若干外部接口供外部合作伙伴调用,开放接口功能组件向接口网关提供与外部接口一一对应的开放接口供接口网关调用;具体而言,接口网关统一接收外部合作伙伴调用的调用请求,将该调用请求转换为对某个开放接口的调用请求,由提供该开放接口的开放接口功能组件进行响应,收到响应的接口网关将响应转换为对外部合作伙伴的响应;这种应用场景中开放接口的调用方是开放平台的接口网关。需要说明的是,在上述各种应用场景示例中,开放平台上可以由一个开放接口功能组件来提供所有开放接口,也可以由多个开放接口功能组件来分别提供各自的开放接口(如每个内部系统都有自己对应的开放接口功能组件,来提供由该内部系统进行功能实现的开放接口),不做限定。此外,开放接口功能组件可以作为内部系统的一个组成部分来运行;也可以作为一个接口网关的组成部分来运行;还可以作为一个独立的系统,在内部系统和/或接口网关之外独立运行;同样不做限定。本申请实施例可以运行在任何具有计算和存储能力的设备上,如手机、平板电脑、pc(personalcomputer,个人电脑)、笔记本、服务器等设备;还可以由运行在两个或两个以上设备的逻辑节点来实现本申请实施例中的各项功能。本申请的实施例中,在开放接口功能组件可以访问的预定存储位置维护有接口配置信息。接口配置信息中包括每个开放接口功能组件提供的每个开放接口的标识、对应的执行模块的标识、以及生成该对应的执行模块时所需的信息。执行模块用来执行对开放接口的调用请求,具体而言,执行模块根据调用请求指定的参数,调用内部系统执行由这些参数确定的功能,得到用来对调用请求进行响应的执行结果。当接口配置信息发生变化后,或者运行开放接口功能组件的系统(即运行本实施例的系统,如接口网关的系统、内部系统、或独立运行的其他系统)启动后,开放接口功能组件从预定存储位置获取接口配置信息,按照接口配置信息生成执行模块。开放接口功能组件从接口配置信息中读取每个开放接口对应的执行模块的标识、以及生成该对应的执行模块时所需的信息,采用所读取的信息生成具有该标识执行模块。生成执行模块时所需的信息、以及生成执行模块的具体方式可以根据实际应用场景中开放接口功能组件所在系统的操作系统、开放接口功能组件的编程语言、程序架构等因素来确定,本申请的实施例不做限定。例如,生成执行模块所需的信息可以是一段代码,将这段代码编译后得到的可执行程序即是执行模块。在另一个例子中,生成执行模块所需的信息可以是内容,执行模块可以是对象,如javascript(java脚本)内容与javascript对象、或者groovy(一种动态编程语言)内容与groovy对象等;开放接口功能组件在接口配置信息中得到与每个执行模块的标识对应的内容后,将每个内容实例化为具有对应标识的对象,即可得到所有的执行模块;开放接口功能组件还可以将所有对象存放在容器中,如javascript容器、或者groovy容器等。在一些应用场景中,当某个开放接口升级后,开放平台会希望保留旧版本的该开放接口,以便为使用旧版本的外部合作伙伴提供兼容性。这种情况下,可以将n(n为自然数)个版本的开放接口作为n个开放接口,在接口配置信息中以开放接口的标识和版本号来代表其中的任一个开放接口(上述n个开放接口具有相同的标识但版本号互不相同),并且每个开放接口的标识和版本号对应于一个执行模块的标识;这样开放接口功能组件将为这n个不同版本的开放接口生成n个对应的执行模块。本申请的实施例中,开放接口的实现方法的流程如图3所示。步骤310,接收向开放接口发起的调用请求。当调用方需要使用某个开放接口提供的功能时,按照约定的请求格式向开放接口功能组件发送调用请求。当调用方是开放平台的接口网关时,接口网关与开放接口功能组件之间约定的请求格式和响应格式,可以与接口网关与外部合作伙伴之间约定的请求格式和响应格式相同,也可以不同;在约定格式不同时,接口网关会将来自外部合作伙伴的调用请求转换为对开放接口功能组件的调用请求,类似的也会将来自开放接口功能组件的调用响应转换为对外部合作伙伴的调用响应。调用请求中的请求参数通常包括被调用开放接口的标识,以及该开放接口执行所提供的功能时与具体业务相关的执行参数,还可以根据实际应用场景的需要包括其他参数。步骤320,根据调用请求中的请求参数,由对应于被调用开放接口的执行模块通过与内部系统的交互得到执行结果。开放接口功能组件按照请求参数中的开放接口标识,依据接口配置信息查找到与该开放接口标识对应的执行模块标识,将请求参数中的执行参数传递给具有该标识的执行模块,由该执行模块采用调用请求指定的执行参数,通过与内部系统的交互来得到该开放接口功能的执行结果。执行模块通过与内部系统交互来执行开放接口功能的具体方式,可根据实际应用场景的业务、接口的具体功能等因素,参照现有技术实现。例如,在内部系统向执行模块开放实现开放接口功能的本地方法的场景中,可以由对应于被调用开放接口的执行模块将执行参数转换为内部系统的本地方法所需的格式后,通过调用内部系统的本地方法得到执行结果。在开放接口功能组件同时提供不同版本的同一个开放接口的场景中,开放接口功能组件为该开放接口的每个版本都生成有对应的执行模块。当调用具有不同版本的开放接口时,通常调用方会在请求参数中指定被调用开放接口的标识和版本号。在收到调用请求后,开放接口功能组件提取请求参数中的开放接口标识和版本号,查找对应的执行模块标识,由具有该标识的执行模块通过与内部系统的交互得到执行结果。步骤330,根据执行结果回复对调用请求的响应。在执行模块得到对开放接口调用请求的执行结果后,开放接口功能组件根据执行结果,生成符合开放接口格式的调用响应,回复给调用方。可见,本申请的实施例中,开放接口功能组件按照接口配置信息生成对应于每个开放接口的执行模块,由对应于被调用开放接口的执行模块根据调用请求与内部系统进行交互后得到执行结果,开放接口功能组件按照执行模块的执行结果回复调用响应;从而能够在开放接口发生改变后,通过修改接口配置信息即可支持新的开放接口,而无需修改内部系统的代码,使得开放接口与内部系统的实现解耦和,加快了开放接口的实现速度,并且不会因开放接口改变影响内部系统的稳定性。在本申请的一个应用示例的网络结构如图4所示,开放平台包括若干个实现不同业务功能的内部系统、api网关系统(一种接口网关)和配置系统。开放平台向外部合作伙伴开放若干个openapi(openapplicationprogramminginterface,开放应用程序编程接口,即一种api形式的开放接口),由api网关系统负责接收和响应外部合作伙伴对这些openapi接口的调用。每个内部系统上部署一个openapi-sdk(openapi-softwaredevelopmentkit,开放应用程序编程接口软件开发工具包,即一种开放接口功能组件),openapi-sdk组件的软件结构如图5所示。开发人员通过配置系统对开放平台的所有openapi接口进行统一维护和管理,包括对openapi接口进行版本号管理。在配置系统上采用3张配置表来维护接口配置信息:dynamic_service表、sdk_conf表和groovy_template表。dynamic_service表用来维护实现openapi接口功能的内部系统的名称、openapi接口的名称及版本号等信息,其中openapi接口的名称即为openapi接口的标识。一种dynamic_service表的结构如表1所示:表1api网关系统在初始化、或者dynamic_service表更新的时候,从配置系统读取当前的dynamic_service表,根据表中的配置信息构建本地缓存。当外部合作伙伴调用openapi接口时,会在请求中携带openapi接口的名称和版本号,api网关系统在本地缓存中查找到与openapi接口的名称和版本号对应的内部系统名称,将该请求分发到该内部系统上的openapi-sdk组件。配置系统中的groovy_template表维护用来生成每个openapi接口的执行模块的信息(本应用示例中为groovy内容),一种groovy_template表的结构如表2所示:表2表2中,groovy内容里面的groovy脚本可以继承openapiproxyservice接口,具体如下:配置系统中的sdk_conf表用来维护各个openapi-sdk组件中的groovy对象与openapi接口的对应关系,一种sdk_conf表的结构如表3所示:字段名描述interfaceopenapi接口的名称versionopenapi接口的版本号system实现openapi接口功能的内部系统的名称groovyid对应的groovy对象的名称表3当某个内部系统初始化、或者groovy_template表有更新、或者sdk_conf表有更新时,部署在该内部系统上的openapi-sdk组件的配置缓存模块从配置系统读取当前的groovy_template表和sdk_conf表,构建本地缓存。配置缓存模块从配置系统中获取配置表中的数据的时候,可以根据内部系统的名称作过滤,只获取属于所在内部系统的数据。配置缓存模块从本地缓存中提取出由本内部系统进行功能实现的openapi接口对应的groovyid,编译该groovyid的groovy的内容,实例化为groovy对象,并且以该groovyid作为唯一标识将该groovy对象存放在groovy容器中。当某个内部系统上的openapi-sdk组件收到api网关系统分发的调用请求时,openapi-sdk组件的spi(serviceproviderinterface,服务提供商接口)实现模块按照调用请求中的openapi接口的名称和版本号,从配置缓存模块构建的本地缓存中查找出对应的groovyid,根据groovyid从groovy容器里面获取以该groovyid为标识的groovy对象,将调用请求传递给该groovy对象。该groovy对象将调用请求中的执行参数转换成该内部系统提供的本地方法所需的强类型对象参数,并调用所在内部系统的本地方法,在得到本地方法返回的强类型对象结果后,groovy对象将强类型对象结果转换为符合与api网关系统约定的调用响应格式,并将调用响应通过spi实现模块返回给api网关系统,由api网关系统向发起调用请求的外部合作伙伴进行回复。与上述流程实现对应,本申请的实施例还提供了一种开放接口的实现装置,该装置可以通过软件实现,也可以通过硬件或者软硬件结合的方式实现。以软件实现为例,作为逻辑意义上的装置,是通过所在设备的cpu(centralprocessunit,中央处理器)将对应的计算机程序指令读取到内存中运行形成的。从硬件层面而言,除了图6所示的cpu、内存以及非易失性存储器之外,开放接口的实现装置所在的设备通常还包括用于进行无线信号收发的芯片等其他硬件,和/或用于实现网络通信功能的板卡等其他硬件。图7所示为本申请实施例提供的一种开放接口的实现装置,每个开放接口对应于一个根据接口配置信息生成的执行模块,所述装置包括调用请求接收单元、执行结果获取单元和调用请求响应单元,其中:调用请求接收单元用于接收向开放接口发起的调用请求;执行结果获取单元用于根据调用请求中的请求参数,由对应于被调用开放接口的执行模块通过与内部系统的交互得到执行结果;所述内部系统为实现被请求的功能的系统;调用请求响应单元用于根据所述执行结果回复对调用请求的响应。可选的,所述接口配置信息中包括:开放接口的标识和版本号,以及对应于所述标识和版本号的开放接口的执行模块的标识;所述请求参数中包括:被调用开放接口的标识和版本号;所述执行结果获取单元具体用于:根据调用请求中的请求参数,由对应于被调用开放接口的标识和版本号的执行模块通过与内部系统的交互得到执行结果。一个例子中,所述装置还包括:执行模块生成单元,用于当接口配置信息发生变化后或运行所述方法的系统启动后,获取接口配置信息,根据接口配置信息生成执行模块。上述例子中,所述执行模块为对象;所述接口配置信息中包括:执行模块的标识和对应于标识的内容;所述执行结果获取单元根据接口配置信息生成执行模块,包括:将每个内容实例化为具有对应标识的对象,并将所有对象存放在容器中。上述例子中,所述对象为groovy对象,所述内容为groovy内容,所述容器为groovy容器。可选的,所述请求参数中包括:执行参数;所述执行结果获取单元具体用于:由对应于被调用开放接口的执行模块将执行参数转换为内部系统的本地方法所需的格式后,通过调用内部系统的本地方法得到执行结果。可选的,所述调用请求响应单元具体用于:根据执行结果,生成符合开放接口格式的调用响应。以上所述仅为本申请的较佳实施例而已,并不用以限制本申请,凡在本申请的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本申请保护的范围之内。在一个典型的配置中,计算设备包括一个或多个处理器(cpu)、输入/输出接口、网络接口和内存。内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(ram)和/或非易失性内存等形式,如只读存储器(rom)或闪存(flashram)。内存是计算机可读介质的示例。计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(pram)、静态随机存取存储器(sram)、动态随机存取存储器(dram)、其他类型的随机存取存储器(ram)、只读存储器(rom)、电可擦除可编程只读存储器(eeprom)、快闪记忆体或其他内存技术、只读光盘只读存储器(cd-rom)、数字多功能光盘(dvd)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitorymedia),如调制的数据信号和载波。还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、商品或者设备中还存在另外的相同要素。本领域技术人员应明白,本申请的实施例可提供为方法、系统或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、cd-rom、光学存储器等)上实施的计算机程序产品的形式。当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1