接口的封装和调用方法、电子设备、及存储介质与流程

文档序号:24549609发布日期:2021-04-06 12:02阅读:68来源:国知局
接口的封装和调用方法、电子设备、及存储介质与流程

本发明实施例涉及计算机应用技术领域,具体涉及一种接口的封装和调用方法、电子设备、及存储介质。



背景技术:

基于需要大量地对接以及调用第三方数据的企业,几乎每个项目都需要大量的对接以及调用第三方数据接口,因此开发一个公共的调用第三方接口的组件是很有必要的。

对于第三方接口的对接及调用,一般采用的方法有:一种是采用最直接的最普通的接口调用方法,也就是在需要查询调用的代码里使用httpclient连接三方接口调用并返回数据。还有一种是将接口请求封装成一个工具类,调用该工具类时,传入请求地址及参数,从而得到返回数据,也就是在前一种方法的基础上封装一层共有的连接层,传入地址,请求参数得到返回数据。

上述两种第三方接口的对接及调用方法,被调用接口与主代码形成了高度耦合,不方便维护,复用性低,而且不能灵活处理不同请求返回的不同结果或对象。



技术实现要素:

有鉴于此,本发明实施例提供一种接口的封装和调用方法、电子设备、及存储介质,以提供一个各个项目统一的查询三方接口的入口系统,代码实现低耦合,高内聚,高复用性。

本发明实施例的其他特性和优点将通过下面的详细描述变得显然,或部分地通过本发明实施例的实践而习得。

在本公开的第一方面,本发明实施例提供了一种接口的封装方法,包括:

创建一个webservice服务项目以作为接口查询服务系统的开发框架;

运用java反射机制创建一个通用的三方接口查询类,其中所述三方接口查询类的返回对象采用class泛型;

为任一第三方公司提供的接口文件生成一个java文件包插件,将该jar文件包插件添加到所述接口查询服务系统中;

在所述接口查询服务系统中创建一个插件配置文件用于配置所添加的一个或一个以上的java文件包插件对应的类路径和所包含的接口名称;

创建用于所述接口查询服务系统启动任一java文件包插件时的初始化方法,用于任一主系统调用任一第三方公司提供的任一接口时,通过执行该初始化方法从所述插件配置文件中读取对应的java文件包插件的名称和类路径后加载到全局资源容器中;

创建一个service层类,以及在所述service层类中创建一个用于任一主系统调用任一第三方公司提供的任一接口时的统一调用方法。

于一实施例中,所述统一调用方法传入的参数包括返回对象、三方接口的请求参数map、java文件包插件名称以及连接时间,其中,所述返回对象采用class泛型。

于一实施例中,所述初始化方法用于:在任一主系统调用任一第三方公司提供的任一接口时,通过执行该初始化方法从所述插件配置文件中读取对应的java文件包插件的名称和类路径后加载到全局资源容器中。

于一实施例中,任一主系统通过所述统一调用方法调用任一第三方公司提供的任一接口时,采用hessian的web服务方式连接查询。

于一实施例中,创建一个webservice服务项目包括:创建一个使用springmvc的web项目。

在本公开的第二方面,本发明实施例还提供了一种接口调用方法,由任一主系统执行,包括:在该主系统的配置文件中定义对应的三方接口对象,为所述三方接口对象指定服务接口属性和服务地址属性

响应于接收到第三方接口请求,调用如第一方面任一项所述的接口的封装方法所生成的接口查询服务系统所提供的服务接口。

于一实施例中,所述接口查询服务系统所提供的服务接口所提供的服务接口为hessian服务接口。

在本公开的第三方面,提供了一种电子设备。该电子设备包括:处理器;以及存储器,用于存储可执行指令,所述可执行指令在被所述处理器执行时使得所述电子设备执行第一方面中的方法。

在本公开的第四方面,提供了一种计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现第一方面中的方法。

本发明实施例提出的技术方案的有益技术效果是:

本发明实施例通过创建一个webservice服务项目以作为接口查询服务系统的开发框架,运用java反射机制创建一个通用的三方接口查询类,为任一第三方公司提供的接口文件生成一个java文件包插件,将该jar文件包插件添加到所述接口查询服务系统中,在所述接口查询服务系统中创建一个插件配置文件用于配置所添加的一个或一个以上的java文件包插件对应的类路径和所包含的接口名称,创建用于所述接口查询服务系统启动任一java文件包插件时的初始化方法,用于任一主系统调用任一第三方公司提供的任一接口时,通过执行该初始化方法从所述插件配置文件中读取对应的java文件包插件的名称和类路径后加载到全局资源容器中,创建一个service层类,以及在所述service层类中创建一个用于任一主系统调用任一第三方公司提供的任一接口时的统一调用方法,能够降低被调用接口与主代码之间耦合度,方便代码维护,提高代码复用性,能够灵活处理不同请求。

附图说明

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

图1是根据本发明实施例提供的一种接口的封装和调用的交互示意图;

图2是根据本发明实施例提供的一种接口的封装方法的流程示意图;

图3是根据本发明实施例提供的一种接口的调用方法的流程示意图;

图4示出了适于用来实现本发明实施例的电子设备的结构示意图。

具体实施方式

为使本发明实施例解决的技术问题、采用的技术方案和达到的技术效果更加清楚,下面将结合附图对本发明实施例的技术方案作进一步的详细描述,显然,所描述的实施例仅仅是本发明实施例中的一部分实施例,而不是全部的实施例。基于本发明实施例中的实施例,本领域技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明实施例保护的范围。

需要说明的是,本发明实施例中术语“系统”和“网络”在本文中常被可互换使用。本发明实施例中提到的“和/或”是指包括一个或更多个相关所列项目的任何和所有组合。本公开的说明书和权利要求书及附图中的术语“第一”、“第二”等是用于区别不同对象,而不是用于限定特定顺序。

还需要说明是,本发明实施例中下述各个实施例可以单独执行,各个实施例之间也可以相互结合执行,本发明实施例对此不作具体限制。

本公开实施方式中的多个装置之间所交互的消息或者信息的名称仅用于说明性的目的,而并不是用于对这些消息或信息的范围进行限制。

下面结合附图并通过具体实施方式来进一步说明本发明实施例的技术方案。

图1是根据本发明实施例提供的一种接口的封装和调用的交互示意图,如图1所示,本发明实施例的目的是提供一个各个主系统统一的查询三方接口的入口系统,即图1中所示的三方查询接口系统,能够使各主系统调用第三方接口时,能够使调用代码实现低耦合,高内聚,高复用性,不同的主系统项目可以通过统一的查询入口得到不同的返回结果对象及处理结果。

本实施例通过三方查询接口系统将查询第三方接口与各主系统分开,通过hessian轻量级服务调用数据,实现第三方接口与各个主系统的低耦合,高内聚,也为各个主系统提供了统一的第三方接口查询服务。各个接口间不相互依赖,根据不同的接口返回的数据,通过java反射机制与泛型得到不同的返回对象,使接口的查询方式得到统一,代码复用。在需要开发新的三方接口时,只需将开发的接口代码打包成jar包插件放入接口查询服务系统并配置在xml文件中即可生效并查询。当接口异常时只需测试该接口的方法而不必在排除故障时调试主系统的其他代码,大大的减少了查找调试的工作量并节省了调试的时间,修改后重新打jar包并放入接口查询服务系统,而不必修改主系统代码,重新打包并启动主系统。

图2示出了本发明实施例提供的一种接口的封装方法的流程示意图,本实施例可适用于为调用第三方接口获取数据而提供第三方接口入口的情况,如图2所示,本实施例所述的接口的封装方法包括:

在步骤s210中,创建一个webservice服务项目以作为接口查询服务系统的开发框架。

例如,可创建一个普通的springmvcweb项目,创建一个抽象类pluginthread并继承callabl<t>,写入请求参数的map变量和全局资源容器对象container。其中,该全局资源容器对象container用于存放全局资源,存放包括初始化时加载的接口插件对象等数据,该抽象类pluginthread为接口插件需要继承的父类。

在步骤s220中,运用java反射机制创建一个通用的三方接口查询类,其中所述三方接口查询类的返回对象采用class泛型。

例如,当前企业的多个主系统需要用到旅游方面的第三方数据,可使用多个三方接口,例如12306提供的支持获取12306火车票票数、票价查询的接口,去哪儿提供的支持获取去哪儿网的内容的接口,途牛提供的支持途牛网的内容的接口,携程提供的支持携程网内容的接口,艺龙提供的支持获取产品数据的接口。

本实施例运用java反射机制与泛型灵活动态的创建对象并调用其属性,从而能得到不同三方接口的返回的不同数据对象。

在步骤s230中,为任一第三方公司提供的接口文件生成一个java文件包插件,将该jar文件包插件添加到所述接口查询服务系统中。

普通的java项目创建三方接口查询类,该类继承pluginthread类并重写override其call方法,在该call方法内写具体的三方接口请求步骤,得到返回数据并封装为具体的某个对象返回,将该类打包为jar包放入所述web项目中,可称为接口查询系统。

对于接口信息配置,可创建一个接口插件配置可扩展标记语言xml文件,在所述xml文件中配置每个接口的名称,类的路径等信息。

具体地,可在springmvc的配置文件中定义一个类型为hessianserviceexporter的bean对象,该bean对象需要接收两个属性,一个是service属性,用于关联真正的service对象以及步骤s330中创建的service层类,另一个是serviceinterface属性,用于指定当前的服务对应的接口。hessianserviceexporter实现了httprequesthandler接口,当主系统请求接口查询调用的时候实际上请求的就是其对应的hessianserviceexporter对象。

这样就实现了采用插件形式将每个接口代码打包成jar包插件放入接口查询系统并配置在xml文件上。初始化系统时读取xml文件获得插件文件信息并放入内存,以供各主系统调用。

在步骤s240中,在所述接口查询服务系统中创建一个插件配置文件用于配置所添加的一个或一个以上的java文件包插件对应的类路径和所包含的接口名称。

在步骤s250中,创建用于所述接口查询服务系统启动任一java文件包插件时的初始化方法,用于任一主系统调用任一第三方公司提供的任一接口时,通过执行该初始化方法从所述插件配置文件中读取对应的java文件包插件的名称和类路径后加载到全局资源容器中。

例如,可创建一个初始化类,当所述接口查询系统启动时运行该类初始化方法,该类初始化方法读取步骤s330中配置好的xml文件并获取插件的名称,类路径等信息并加载到全局资源容器。

其中,所述初始化方法可用于,在任一主系统调用任一第三方公司提供的任一接口时,通过执行该初始化方法从所述插件配置文件中读取对应的java文件包插件的名称和类路径后加载到全局资源容器中。

根据本公开的一个或多个实施例,任一主系统可通过所述统一调用方法调用任一第三方公司提供的任一接口时,采用hessian的web服务方式连接查询。hessian是一个轻量级的remotingonhttp工具,使用简单的方法提供了rmi(remotemethodinvocation,远程方法调用)的功能。相比常用的webservice服务,hessian更简单、快捷。

需要说明的是,rmi是用java在jdk1.2中实现的,它大大增强了java开发分布式应用的能力。java作为一种风靡一时的网络开发语言,其巨大的威力就体现在它强大的开发分布式网络应用的能力上,而rmi就是开发百分之百纯java的网络分布式应用系统的核心解决方案之一。其实它可以被看作是rpc(remoteprocedurecall,远程过程调用)的java版本。

在步骤s260中,创建一个service层类,以及在所述service层类中创建一个用于任一主系统调用任一第三方公司提供的任一接口时的统一调用方法。

为了调用的统一和方便,该加载接口的方法可设设置主系统调用接口的统一方法,传入的参数分别为返回结果的class泛型、三方接口的请求参数map、以及接口插件名称以及连接时间,返回结果使用泛型。

该加载接口的方法的具体可通过如下方法实现:通过传入的接口插件名称在全局资源容器里获取该插件的对象plugin,对象包括接口插件名称,class路径,构造器对象constructor<pluginthread<?>>等),获取该插件对象的构造器对象,然后根据构造器创建实例pluginthread<?>,使用多线程threadpooltaskexecutor提交该实例任务得到并返回结果。

针对多个主系统的调用,可采用多线程方式并发执行并快速调用接口。

根据本公开的一个或多个实施例,所述统一调用方法传入的参数包括返回对象、三方接口的请求参数map、java文件包插件名称以及连接时间等,其中,所述返回对象可采用class泛型。

通过将查询与主系统分开,通过hessian轻量级服务调用数据,实现了与系统的低耦合,高内聚,也为各个系统提供了统一的第三方接口查询服务。各个接口间不相互依赖,根据不同的接口返回的数据,通过java反射机制与泛型得到不同的返回对象,使查询得到统一,代码复用。在需要开发新的三方接口时,只需将开发的接口代码打包成jar包插件放入接口查询系统并配置在xml文件中即可生效并查询。当接口异常时只需测试该接口的方法而不必debug主系统的其他代码,大大的减少了查找bug并解决bug的时间,修改后重新打jar包并放入接口查询系统,而不必修改主系统代码,重新打包并启动主系统。

本实施例通过创建一个webservice服务项目以作为接口查询服务系统的开发框架,运用java反射机制创建一个通用的三方接口查询类,为任一第三方公司提供的接口文件生成一个java文件包插件,将该jar文件包插件添加到所述接口查询服务系统中,在所述接口查询服务系统中创建一个插件配置文件用于配置所添加的一个或一个以上的java文件包插件对应的类路径和所包含的接口名称,创建用于所述接口查询服务系统启动任一java文件包插件时的初始化方法,用于任一主系统调用任一第三方公司提供的任一接口时,通过执行该初始化方法从所述插件配置文件中读取对应的java文件包插件的名称和类路径后加载到全局资源容器中,创建一个service层类,以及在所述service层类中创建一个用于任一主系统调用任一第三方公司提供的任一接口时的统一调用方法,能够降低被调用接口与主代码之间耦合度,方便代码维护,提高代码复用性,能够灵活处理不同请求。

图3示出了本发明实施例提供的另一种接口的调用方法的流程示意图,本实施例以前述实施例封装的接口为基础,进行了调用。如图3所示,本实施例所述的接口的调用方法包括:

在步骤s310中,在该主系统的配置文件中定义对应的三方接口对象,为所述三方接口对象指定服务接口属性和服务地址属性。

可在该主系统的配置文件中定义对应的如下对象的如下属性:

org.springframework.remoting.caucho.hessianproxyfactorybeanbean对象,在该对象中指定serviceinterface属性和serviceurl属性。

hessianproxyfactorybean对象需要指定两个属性,一个是serviceinterface属性,表示当前请求的远程服务(即所述接口查询系统)对应的接口;另一个是serviceurl属性,表示当前的远程服务对应的服务端(即接口查询系统)请求地址。

在步骤s320中,响应于接收到第三方接口请求,调用预定的接口的封装方法所搭建的接口查询服务系统所提供的服务接口。

当该主系统需要请求第三方接口时,调用所述接口查询系统提供的hessian服务接口即可。

本实施例的技术方案能够实现各个主系统项目采用统一接口查询三方系统,各主系统采用的用于查询接口的代码能够实现低耦合,高内聚,高复用性,能够使不同的主系统项目通过统一的查询接口得到不同的返回结果对象及处理结果。

下面参考图4,其示出了适于用来实现本发明实施例的电子设备400的结构示意图。本发明实施例中的上述终端设备,例如为移动设备、电脑、或浮动车中内置的车载设备等,或其任意组合。在一些实施例中,移动设备例如可以包括手机、智能家居设备、可穿戴设备、智能移动设备、虚拟现实设备等,或其任意组合。图4示出的电子设备仅仅是一个示例,不应对本发明实施例的功能和使用范围带来任何限制。

如图4所示,电子设备400可以包括处理装置(例如中央处理器、图形处理器等)401,其可以根据存储在只读存储器(rom)402中的程序或者从存储装置408加载到随机访问存储器(ram)403中的程序而执行各种适当的动作和处理。在ram403中,还存储有电子设备400操作所需的各种程序和数据。处理装置401、rom402以及ram403通过总线404彼此相连。输入/输出(i/o)接口405也连接至总线404。

通常,以下装置可以连接至i/o接口405:包括例如触摸屏、触摸板、键盘、鼠标、摄像头、麦克风、加速度计、陀螺仪等的输入装置406;包括例如液晶显示器(lcd)、扬声器、振动器等的输出装置407;包括例如磁带、硬盘等的存储装置408;以及通信装置409。通信装置409可以允许电子设备400与其他设备进行无线或有线通信以交换数据。虽然图4示出了具有各种装置的电子设备400,但是应理解的是,并不要求实施或具备所有示出的装置。可以替代地实施或具备更多或更少的装置。

特别地,根据本发明实施例的实施例,上文参考流程图描述的过程可以被实现为计算机软件程序。例如,本发明实施例的实施例包括一种计算机程序产品,其包括承载在计算机可读介质上的计算机程序,该计算机程序包含用于执行流程图所示的方法的程序代码。在这样的实施例中,该计算机程序可以通过通信装置409从网络上被下载和安装,或者从存储装置408被安装,或者从rom402被安装。在该计算机程序被处理装置401执行时,执行本发明实施例的方法中限定的上述功能。

需要说明的是,本发明实施例上述的计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质或者是上述两者的任意组合。计算机可读存储介质例如可以是但不限于电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子可以包括但不限于:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机访问存储器(ram)、只读存储器(rom)、可擦式可编程只读存储器(eprom或闪存)、光纤、便携式紧凑磁盘只读存储器(cd-rom)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本发明实施例中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。而在本发明实施例中,计算机可读信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读信号介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于:电线、光缆、rf(射频)等等,或者上述的任意合适的组合。

上述计算机可读介质可以是上述电子设备中所包含的;也可以是单独存在,而未装配入该电子设备中。

上述计算机可读介质承载有一个或者多个程序,当上述一个或者多个程序被该电子设备执行时,使得该电子设备:创建一个webservice服务项目以作为接口查询服务系统的开发框架;运用java反射机制创建一个通用的三方接口查询类,其中所述三方接口查询类的返回对象采用class泛型;为任一第三方公司提供的接口文件生成一个java文件包插件,将该jar文件包插件添加到所述接口查询服务系统中;在所述接口查询服务系统中创建一个插件配置文件用于配置所添加的一个或一个以上的java文件包插件对应的类路径和所包含的接口名称;创建用于所述接口查询服务系统启动任一java文件包插件时的初始化方法,用于任一主系统调用任一第三方公司提供的任一接口时,通过执行该初始化方法从所述插件配置文件中读取对应的java文件包插件的名称和类路径后加载到全局资源容器中;创建一个service层类,以及在所述service层类中创建一个用于任一主系统调用任一第三方公司提供的任一接口时的统一调用方法。

可以以一种或多种程序设计语言或其组合来编写用于执行本发明实施例的操作的计算机程序代码,上述程序设计语言包括面向对象的程序设计语言—诸如java、smalltalk、c++,还包括常规的过程式程序设计语言—诸如“c”语言或类似的程序设计语言。程序代码可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络包括局域网(lan)或广域网(wan)连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。

附图中的流程图和框图,图示了按照本发明实施例各种实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,该模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。

描述于本发明实施例中所涉及到的单元可以通过软件的方式实现,也可以通过硬件的方式来实现。其中,单元的名称在某种情况下并不构成对该单元本身的限定,例如,第一获取单元还可以被描述为“获取至少两个网际协议地址的单元”。

以上描述仅为本发明实施例的较佳实施例以及对所运用技术原理的说明。本领域技术人员应当理解,本发明实施例中所涉及的公开范围,并不限于上述技术特征的特定组合而成的技术方案,同时也应涵盖在不脱离上述公开构思的情况下,由上述技术特征或其等同特征进行任意组合而形成的其它技术方案。例如上述特征与本发明实施例中公开的(但不限于)具有类似功能的技术特征进行互相替换而形成的技术方案。

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