对HTTP请求进行统一映射的方法和设备与流程

文档序号:12747776阅读:783来源:国知局
对HTTP请求进行统一映射的方法和设备与流程

本申请涉及计算机领域,尤其涉及一种用于对HTTP请求进行统一映射的技术。



背景技术:

现在很多的JAVA后端应用要通过HTTP(HTTP,HyperText Transfer Protocol,网络协议)请求调用第三方应用的接口,则编写的代码里必须有HTTP请求的URL(Uniform Resource Locator,统一资源定位符),端口和传递的配置参数。

现有JAVA(一种可以撰写跨平台应用软件的面向对象的程序设计语言)的后端发送HTTP请求时,根据不同的业务的逻辑,调用不同第三方应用的HTTP请求就得定义不同的方法,里面的逻辑就是拼装参数,在调用底层的HTTP公用的请求方法,这样就导致代码的冗余和开发的重复。会在代码里定义多个调用第三方的URL、端口以及配置参数,导致业务逻辑的代码和请求的配置参数的代码混合在一起,没有很好的分离,并且不同的开发人员根据业务的不断重复开发访问HTTP请求的基础代码,导致代码复用率较低,开发效率有所下降。



技术实现要素:

本申请要解决的技术问题是将调用第三方HTTP请求的配置参数从业务的逻辑内容中分离后,如何利用分离的配置参数完成HTTP请求,从而在提高配置参数的复用率情况下,实现HTTP请求。

为解决上述技术问题,本申请提供一种对HTTP请求进行统一映射的方法,其中,所述对HTTP请求进行统一映射的方法包括:

获取用于访问第三方HTTP服务的映射文件,其中,所述映射文件包括HTTP请求的配置参数和封装路径方法;

获取用于访问第三方HTTP服务的接口及与所述接口的动态代理注 解,其中,所述接口包括若干接口方法,且所述接口方法的属性与所述HTTP请求的封装路径方法的属性一一对应;

根据所述映射文件生成JAVA对象,并根据相应所述接口的动态代理注解生成动态代理对象;

当获取到对具有动态代理注解的接口进行调用的请求时,利用所述动态代理对象拦截所述请求,并根据所述请求获取相应所述JAVA对象,并利用反射机制调用HTTP请求基础服务中的方法,以完成HTTP请求。

进一步地,所述HTTP请求的配置参数至少包括以下任一项:

所述第三方HTTP服务的URL地址、端口或公共参数;

所述HTTP请求的封装路径方法至少包括以下任一项:

所述封装路径方法的属性、路径或其所调用的所述HTTP请求基础服务的方法名称。

进一步地,根据所述映射文件生成JAVA对象包括:

根据所述映射文件中的配置参数和封装路径方法生成相对应的JAVA对象,其中,所述JAVA对象包括:

URL对象、公共参数对象和封装路径方法对象。

进一步地,根据所述映射文件生成JAVA对象包括:

利用JAXB将所述映射文件中加载到内存,并生成相对应的所述JAVA对象。

进一步地,根据所述请求获取相应所述JAVA对象,并利用反射机制调用HTTP请求基础服务中的方法包括:

根据所述请求获取所述JAVA对象,其中,所述JAVA对象包括URL对象、公共参数对象和封装路径方法对象;

从所述URL对象中获取URL地址、从所述公共参数对象获取公共参数、并从所述封装路径方法对象中获取路径;

将所述公共参数和所述路径封装真正的HTTP请求地址;

调用HTTP请求基础服务中的方法,利用所述真正的HTTP请求地址完成一次HTTP调用。

进一步地,调用HTTP请求基础服务中的方法包括:

利用反射技术调用HTTP请求基础服务中的方法。

进一步地,所述动态代理注解的属性与所述接口的属性相同。

进一步地,所述映射文件为XML格式文件。

进一步地,所述HTTP请求基础服务包括基础HTTP请求方法,其中,所述基础HTTP请求方法至少包括以下任一项:

请求指定的页面信息,并返回实体主体的方法;

请求服务器接受所指定的文档作为对所标识的URI的新的从属实体的方法;

从客户端向服务器传送的数据取代指定的文档的内容的方法;或

请求服务器删除指定的页面的方法。

进一步地,所述HTTP请求基础服务还包括自定义HTTP请求方法。

根据本申请另一方面提供的一种对HTTP请求进行统一映射的设备,其中,所述设备包括:

映射文件获取装置,用于获取用于访问第三方HTTP服务的映射文件,其中,所述映射文件包括HTTP请求的配置参数和封装路径方法;

接口获取装置,用于获取用于访问第三方HTTP服务的接口及与所述接口的动态代理注解,其中,所述接口包括若干接口方法,且所述接口方法的属性与所述HTTP请求的封装路径方法的属性一一对应;

对象生成装置,用于根据所述映射文件生成JAVA对象,并根据相应所述接口的动态代理注解生成动态代理对象;

HTTP请求执行装置,用于当获取到对具有动态代理注解的接口进行调用的请求时,利用所述动态代理对象拦截所述请求,并根据所述请求获取相应所述JAVA对象,并利用反射机制调用HTTP请求基础服务中的方法,以完成HTTP请求。

进一步地,所述HTTP请求的配置参数至少包括以下任一项:

所述第三方HTTP服务的URL地址、端口或公共参数;

所述HTTP请求的封装路径方法至少包括以下任一项:

所述封装路径方法的属性、路径或其所调用的所述HTTP请求基础服务的方法名称。

进一步地,所述对象生成装置用于:

根据所述映射文件中的配置参数和封装路径方法生成相对应的JAVA对象,其中,所述JAVA对象包括:

URL对象、公共参数对象和封装路径方法对象。

进一步地,所述对象生成装置用于:

利用JAXB将所述映射文件中加载到内存,并生成所述相对应的JAVA。

进一步地,所述HTTP请求执行装置用于:

根据所述请求获取所述JAVA对象,其中,所述JAVA对象包括URL对象、公共参数对象和封装路径方法对象;

从所述URL对象中获取URL地址、从所述公共参数对象获取公共参数、并从所述封装路径方法对象中获取路径;

将所述公共参数和所述路径封装真正的HTTP请求地址;

调用HTTP请求基础服务中的方法,并利用所述真正的HTTP请求地址完成一次HTTP调用。

进一步地,所述HTTP请求执行装置用于:

利用反射技术调用HTTP请求基础服务中的方法,并利用所述真正的HTTP请求地址完成一次HTTP调用。

进一步地,所述动态代理注解的属性与所述接口的属性相同。

进一步地,所述映射文件为XML格式文件。

进一步地,所述HTTP请求基础服务包括基础HTTP请求方法,其中,所述基础HTTP请求方法至少包括以下任一项:

请求指定的页面信息,并返回实体主体的方法;

请求服务器接受所指定的文档作为对所标识的URI的新的从属实体的方法;

从客户端向服务器传送的数据取代指定的文档的内容的方法;或

请求服务器删除指定的页面的方法。

进一步地,所述HTTP请求基础服务还包括自定义HTTP请求方法。

具体地,当需要向第三方发起HTTP请求时,对HTTP请求进行统一 映射的执行过程包括:

获取用于访问第三方HTTP服务的映射文件,其中,所述映射文件包括用于访问第三方的HTTP请求的URL地址、端口和公用参数等配置参数、封装路径方法的属性、路径及其所调用的HTTP请求基础服务的方法;

获取用于访问第三方HTTP服务的接口及其动态代理注解,其中接口包括若干接口方法,若干接口方法与所述映射文件中的封装路径方法的属性(ID)的名称一一对应,以能够通过属性的对应方式从接口对应到映射文件,所述动态代理注解的属性与所述接口的属性相对应;

当WEB容器启动时,利用JAXB(jackson-module-jaxb-annotations,能够使用Jackson对JAXB注解的支持实现)把自定义的映射文件里的标签,加载到内存生成相对应的JAVA对象;

为每个对象初始化之后,会找到这个对象对应的接口所对应的动态代理注解,并根据所述动态代理注解的属性,生成动态代理对象;

当有业务对相应动态代理注解的接口进行调用的时,动态代理对象就会进行拦截,反射到底层的HTTP请求基础服务,其中,反射过程包括:获取JAVA对象中的HOST对象;从HOST对象中获取URL对象,从URL对象中获取路径、URL地址及公共参数;封装路径;获取公共参数;封装真正的HTTP请求地址;根据所述URL地址,反射调用所述HTTP请求基础服务,完成一次HTTP调用。并利用底层的HTTP请求基础服务的方法发起HTTP请求,完成一次HTTP请求调用。

与现有技术相比,所述对HTTP请求进行统一映射的方法和设备通过获取用于访问第三方HTTP服务的映射文件,并获取所述映射文件对应的接口并为所述接口注入反射,其中,所述映射文件将HTTP请求的URL地址、端口、公共参数、和封装路径方法的属性、路径及其调用的HTTP请求基础服务中的方法等配置内容从业务逻辑内容中独立,并将映射文件将所述映射文件与所述接口相对应。当WEB启动时,根据映射文件生成相应JAVA对象,并根据请求调用相应接口对应的反射代理注解生成动态代理对象,则在进行HTTP请求时,动态代理对象会利用根据所述映射文件生成的JAVA对象处理所述请求,并调用HTTP请求基础服务中的方法, 完成HTTP请求,从而实现映射文件的一次开发多次复用,从而在简化开发难度提高复用率的情况下实现HTTP请求调用。

附图说明

通过阅读参照以下附图所作的对非限制性实施例所作的详细描述,本申请的其它特征、目的和优点将会变得更明显:

图1示出根据本申请一方面提供的一种对HTTP请求进行统一映射的方法的流程示意图;

图2示出根据本申请一方面提供的一种对HTTP请求进行统一映射的设备的结构示意图。

附图中相同或相似的附图标记代表相同或相似的部件。

具体实施方式

下面结合附图对本申请作进一步详细描述。

图1示出根据本申请一方面提供的一种对HTTP请求进行统一映射的方法的流程示意图,所述方法包括:步骤S11、步骤S12、步骤S13和步骤S14。

其中,所述步骤S11包括:获取用于访问第三方HTTP服务的映射文件,其中,所述映射文件包括HTTP请求的配置参数和封装路径方法;所述步骤S12包括:获取用于访问第三方HTTP服务的接口及与所述接口的动态代理注解,其中,所述接口包括若干接口方法,且所述接口方法的属性与所述HTTP请求的封装路径方法的属性一一对应;所述步骤S13包括:根据所述映射文件生成JAVA对象,并根据相应所述接口的动态代理注解生成动态代理对象;所述步骤S14包括:当获取到对具有动态代理注解的接口进行调用的请求时,利用所述动态代理对象拦截所述请求,并根据所述请求获取相应所述JAVA对象,调用HTTP请求基础服务中的方法,以完成HTTP请求。

进一步地,所述HTTP请求的配置参数至少包括以下任一项:所述第三方HTTP服务的URL地址、端口或公共参数;所述HTTP请求的封装 路径方法至少包括以下任一项:所述封装路径方法的属性、路径或其所调用的所述HTTP请求基础服务的方法名称。

根据本申请一实施例,所述对HTTP请求进行统一映射的方法通过创建用于访问第三方HTTP服务的映射文件,将配置参数和封装路径方法等请求配置代码独立,并将所述映射文件与所述接口相对应。当需要访问相应第三方HTTP服务的HTTP请求时,获取所述映射文件对应的接口和所述接口注入的动态反射代理注解,并根据相应所述接口的动态代理注解生成动态代理对象,则在进行HTTP请求时,所述动态代理对象会利用根据所述映射文件生成的JAVA对象处理所述请求,并调用HTTP请求基础服务中的方法,完成HTTP请求,从而实现映射文件的一次开发,可以被开发人员多次利用,并且开发人员无需关注HTTP底层的技术实现,从而实现在简化开发复杂度并提高开发效率的情况下实现HTTP请求调用。

具体地,所述步骤S11用于获取用于访问第三方HTTP服务的映射文件,其中,所述映射文件包括HTTP请求的配置参数和封装路径方法。进一步地,所述HTTP请求的配置参数至少包括以下任一项:所述第三方HTTP服务的URL地址、端口或公共参数;所述HTTP请求的封装路径方法至少包括以下任一项:所述封装路径方法的属性、路径或其所调用的所述HTTP请求基础服务的方法名称。

优选的,所述映射文件为映射文件,所述映射文件可以在后续加载并生成JAVA对象,业务调用相应接口时,动态代理对象会进行拦截,并利用所述JAVA对象,实现HTTP请求。

其中,所述映射文件的代码实现包括但不限于:

在此,<host name=“${dataplus.base.host}”>的name(URL地址)是调用第三方的地址,所述地址可以是URL地址也可以是IP地址(Internet Protocol Address),例如<host name=“127.0.0.1”>,接着,在<String port=host.getPort();//获取端口>中的String port记录的端口的信息,接着,在<publicParam key="timestamp">dynamic:Query:ClassName</publicParam>中,所述的publicParam是公共参数(其中,访问第三方应用,对方一般由于要安全的考虑所有的请求会有一些必定传得参数,一些参数是固定不变的,一些参数是代码动态运行时生成的),所述key是公共参数的名称,所述dynamic是用于说明参数是动态生成的,所述Query是用于说明参数是放在请求头里,所述AddHeader是用于说明参数是放在请求头里,所述className是用于说明动态参数生成的规则所需要调用的工具类。

其中,所述<url id="newTenant"path="/api2.0/tenant"method="doPostEntity"/>封装路径方法,其中,所述url是用于说明每个业务需要 调用不同的路径地址,所述id是用于说明每个业务方法对应不同的唯一标识(这个必须跟定义的业务接口的方法名称一样,程序是通过这个来进行反射的),所述path是用于说明业务不同的路径地址,所述method是用于调用底层HTTP请求基础服务里的方法名称。

当然,本领域技术人员应当能够理解,上述对映射文件的代码实现的方式仅为举例,今后可能出现的包括URL地址、端口、公共参数、封装路径方法等配置参数的内容的映射文件的实现方式,如能使用本申请,均可以以引用的方式包含于此。

具体地,所述步骤S12用于获取用于访问第三方HTTP服务的接口及与所述接口的动态代理注解,其中,所述接口包括若干接口方法,且所述接口方法的属性与所述HTTP请求的封装路径方法的属性一一对应。

在此,所述接口为HTTP请求调用过程提供的对象之间调用的通道,并且通过对所述接口注入动态代理,能够在HTTP请求调用过程提供了动态代理机制,以实现HTTP请求的顺利完成。

在具体场景中,用于访问第三方HTTP服务的接口的具体代码实现可以但不限于:

public interface BaseClientService{

Map<String,Object>newTenant(Map<String,Object>params);

Map<String,Object>newBaseUser(Map<String,Object>params);

Map<String,Object>addTenantMember(Map<String,Object>params);

……

}

所述接口包括newTenant、newBaseUser和addTenantMember等接口方法,且所述接口方法的属性与前例的映射文件中所述<url>中id的属性一一对应,以便后续动态代理根据所述接口与所述映射文件的一一对应的关系进行反射,其中,所述接口方法的入参是Map<String,Object>对象,出参是根据HTTP返回的字符串再反序列化成自定义的对象。

当然,本领域技术人员应当能够理解,上述对接口的代码实现的方式仅为举例,今后可能出现的能够提供反射机制来实现对象之间的调用的接 口的实现方式,如能使用本申请,均可以以引用的方式包含于此。

接着,所述步骤S13将所述步骤S12获取的映射文件生成JAVA对象。所述步骤S13包括:根据所述映射文件生成JAVA对象,并根据相应所述接口的动态代理注解生成动态代理对象。具体地,可以利用JAXB根据所述映射文件,将所述映射文件中的标签,加载到内存,并生成相对应的JAVA对象。利用JAXB将所述映射文件中的标签,加载到内存,并生成相对应的JAVA对象。其中,根据映射文件的配置参数和封装路径方法的内容,所生成的JAVA对象可以包括URL对象、公共参数对象和封装路径方法对象。其中,所述URL对象包括URL地址和端口等信息,所述公共参数对象包括公共参数等信息,所述封装路径方法对象包括所述封装路径方法的属性、路径或其所调用的所述HTTP请求基础服务的方法名称的信息。

在此,将获取的映射文件生成JAVA对象的实现代码可以但不限于:

public class Host{

protected PublicParams publicParams;

protected Urls urls;

protected String name;//

}

其中,所述publicParams(公共参数对象)与映射文件里的<publicParams>(公共参数)标签对应,所述urls(封装路径方法对象)对应映射文件里的<urls>标签(封装路径方法)对应,所述name(URL对象)对用所述映射文件中的<host name>(URL)。

当然,本领域技术人员应当能够理解,上述将获取的映射文件生成JAVA对象的实现代码的方式仅为举例,今后可能出现的JAVA对象生成过程的实现方式,如能使用本申请,均可以以引用的方式包含于此。

进一步地,所述步骤S14包括:当获取到对具有动态代理注解的接口进行调用的请求时,利用所述动态代理对象拦截所述请求,并根据所述请求获取相应所述JAVA对象,并利用反射机制调用HTTP请求基础服务中的方法,以完成HTTP请求。

在此,所述步骤S14用于在HTTP请求执行过程中,利用步骤S13中生成的动态代理对象拦截业务对含有动态代理注解的接口的调用,获取步骤S13生成的JAVA对象,并利用反射机制调用HTTP请求基础服务中的方法,以完成HTTP请求。

其中,步骤S14利用反射机制调用HTTP请求基础服务中的方法,以完成HTTP请求,具体包括:根据所述请求获取所述JAVA对象,其中,所述JAVA对象包括URL对象、公共参数对象和封装路径方法对象;从所述URL对象中获取URL地址、从所述公共参数对象获取公共参数、并从所述封装路径方法对象中获取路径;将所述公共参数和所述路径封装真正的HTTP请求地址;调用HTTP请求基础服务中的方法,利用所述真正的HTTP请求地址完成一次HTTP调用。

当WEB容器(一种服务程序,用于处理从客户端发出的请求)启动时,利用JAXB(jackson-module-jaxb-annotations,能够使用Jackson对JAXB注解的支持实现)把自定义的映射文件里的标签,加载到内存生成相对应的JAVA对象;

为每个对象初始化之后,会找到这个对象对应的接口所对应的动态代理注解,并根据所述动态代理注解的属性,生成动态代理对象;

当有业务对相应动态代理注解的接口进行调用的时,动态代理对象就会进行拦截,反射到底层的HTTP请求基础服务,其中,反射过程包括:获取JAVA对象中的HOST对象;从HOST对象中获取URL对象,从URL对象中获取路径、URL地址及公共参数;封装路径;获取公共参数;封装真正的HTTP请求地址;根据所述URL地址,反射调用所述HTTP请求基础服务,完成一次HTTP调用,并利用底层的HTTP请求基础服务的方法发起HTTP请求,完成一次HTTP请求调用。

具体地,反射调用所述HTTP请求基础服务,完成一次HTTP调用的代码实现可以但不限于如下:

当然,本领域技术人员应当能够理解,上述对反射调用所述HTTP请求基础服务,完成一次HTTP调用的实现代码的方式仅为举例,今后可能出现的反射调用所述HTTP请求基础服务,完成一次HTTP调用的实现方式,如能使用本申请,均可以以引用的方式包含于此。

进一步地,所述HTTP请求基础服务包括基础HTTP请求方法,其中,所述基础HTTP请求方法至少包括以下任一项:

GET:请求指定的页面信息,并返回实体主体的方法;

POST:请求服务器接受所指定的文档作为对所标识的URI的新的从属实体的方法;

PUT:从客户端向服务器传送的数据取代指定的文档的内容的方法;

DELETE:请求服务器删除指定的页面的方法。

此外,所述HTTP请求基础服务还可包括其他HTTP请求方法,例如HEAD、OPTIONS、TRACE、CONNECT等,此外,还可以由开发人员自行定义HTTP请求方法,在此不做赘述。

所述HTTP请求基础服务的实现代码可以但不限于如下:

public String doGet(String url){}

public String doPost(String url,Map<String,Object>data){}

public String doDelete(String url,Map<String,String>data){}

public String doPut(String url,Map<String,String>data){}

当然,本领域技术人员应当能够理解,上述对所述HTTP请求基础服务的实现代码的方式仅为举例,今后可能出现的所述HTTP请求基础服务的实现方式,如能使用本申请,均可以以引用的方式包含于此。

在一具体的场景中,对HTTP请求进行统一映射之前,可以首先创建对HTTP请求进行统一映射的框架,包括:创建一个用于访问第三方HTTP服务的映射文件,其中,所述映射文件包括配置参数和封装路径方法,其中,配置参数包括所述第三方HTTP服务的URL地址、端口及公共参数;封装路径方法包括:所述封装路径方法的属性、路径及其所调用的所述HTTP请求基础服务的方法名称。接着,在应用层创建用于访问第三方HTTP服务的接口,其中接口包括若干接口方法,若干接口方法与所述映射文件中的封装路径方法的属性(ID)一一对应,以能够通过属性的对应方式从接口对应到映射文件;在应用层,对所述接口注入动态代理注解,所述动态代理注解的属性与所述接口的属性相对应。然后,在应用层的业务方法中,将参数和URL进行逻辑拼接;在底层创建HTTP请求基础服务,所述HTTP请求基础服务中的方法包括基本HTTP请求:GET、POST、PUT和DELETE,此外,还可根据用户需要自定义HTTP请求。

则,当需要向第三方发起HTTP请求时,对HTTP请求进行统一映射的执行过程包括:

1.获取上述创建的用于访问第三方HTTP服务的映射文件、接口及接口的动态代理注解、以及应用层的业务方法;

2.当WEB容器启动时,利用JAXB(jackson-module-jaxb-annotations,能够使用Jackson对JAXB注解的支持实现)把自定义的映射文件里的标签,加载到内存生成相对应的JAVA对象;

3.为每个对象初始化之后,会找到这个对象对应的接口所对应的动态代理注解,并根据所述动态代理注解的属性,生成动态代理对象;

4.当有业务对相应动态代理注解的接口进行调用的时,动态代理对象就会进行拦截,反射到底层的HTTP请求基础服务,其中,反射过程包括: 获取JAVA对象;从JAVA对象中获得URL对象、公用参数对象和封装路径方法对象,从所述URL对象中获取URL地址、从所述公共参数对象获取公共参数、并从所述封装路径方法对象中获取路径;封装路径;获取公共参数;封装真正的HTTP请求地址;根据所述URL地址,反射调用所述HTTP请求基础服务,完成一次HTTP调用。并利用底层的HTTP请求基础服务的方法发起HTTP请求,完成一次HTTP请求调用。

图2示出根据本申请一方面提供的一种对HTTP请求进行统一映射的设备的结构示意图,所述设备1包括:映射文件获取装置11、接口获取装置12、对象生成装置13和HTTP请求执行装置14。

其中,映射文件获取装置11用于获取用于访问第三方HTTP服务的映射文件,其中,所述映射文件包括HTTP请求的配置参数和封装路径方法;接口获取装置12用于获取用于访问第三方HTTP服务的接口及与所述接口的动态代理注解,其中,所述接口包括若干接口方法,且所述接口方法的属性与所述HTTP请求的封装路径方法的属性一一对应;对象生成装置13用于根据所述映射文件生成JAVA对象,并根据相应所述接口的动态代理注解生成动态代理对象;HTTP请求执行装置14用于当获取到对具有动态代理注解的接口进行调用的请求时,利用所述动态代理对象拦截所述请求,并根据所述请求获取相应所述JAVA对象,并利用反射机制调用HTTP请求基础服务中的方法,以完成HTTP请求。

进一步地,所述HTTP请求的配置参数至少包括以下任一项:所述第三方HTTP服务的URL地址、端口或公共参数;所述HTTP请求的封装路径方法至少包括以下任一项:所述封装路径方法的属性、路径或其所调用的所述HTTP请求基础服务的方法名称。

在此,所述设备1包括一种能够按照事先设定或存储的指令,自动进行数值计算和信息处理的电子设备,其硬件包括但不限于微处理器、专用集成电路(ASIC)、可编程门阵列(FPGA)、数字处理器(DSP)、嵌入式设备等。所述网络设备其包括但不限于计算机、网络主机、单个网络服务器、多个网络服务器集或多个服务器构成的云;在此,云由基于云计算(Cloud Computing)的大量计算机或网络服务器构成,其中,云计算是分布式计 算的一种,由一群松散耦合的计算机集组成的一个虚拟超级计算机。所述网络包括但不限于互联网、广域网、城域网、局域网、VPN网络、无线自组织网络(Ad Hoc网络)等。此外,所述设备1还可以包括运行于所述用户设备、网络设备、或用户设备与网络设备相集成所构成的设备上的脚本程序,或所述脚本程序与电子设备的结合。当然,本领域技术人员应能理解上述设备1仅为举例,其他现有的或今后可能出现的设备1如可适用于本申请,也应包含在本申请保护范围以内,并在此以引用方式包含于此。

根据本申请一实施例,所述对HTTP请求进行统一映射的方法通过创建用于访问第三方HTTP服务的映射文件,将配置参数和封装路径方法等请求配置代码独立,并将所述映射文件与所述接口相对应。当需要访问相应第三方HTTP服务的HTTP请求时,获取所述映射文件对应的接口和所述接口注入的动态反射代理注解,并根据相应所述接口的动态代理注解生成动态代理对象,则在进行HTTP请求时,所述动态代理对象会利用根据所述映射文件生成的JAVA对象处理所述请求,并调用HTTP请求基础服务中的方法,完成HTTP请求,从而实现映射文件的一次开发,可以被开发人员多次利用,并且开发人员无需关注HTTP底层的技术实现,从而实现在简化开发复杂度并提高开发效率的情况下实现HTTP请求调用。

具体地,所述映射文件获取装置11用于获取用于访问第三方HTTP服务的映射文件,其中,所述映射文件包括HTTP请求的配置参数和封装路径方法。进一步地,所述HTTP请求的配置参数至少包括以下任一项:所述第三方HTTP服务的URL地址、端口或公共参数;所述HTTP请求的封装路径方法至少包括以下任一项:所述封装路径方法的属性、路径或其所调用的所述HTTP请求基础服务的方法名称。

优选的,所述映射文件为XML文件,所述XML文件可以在后续加载并生成JAVA对象,业务调用相应接口时,动态代理对象会进行拦截,并利用所述JAVA对象,实现HTTP请求。

在此,<host name=“${dataplus.base.host}”>的name(URL地址)是调用第三方的地址,所述地址可以是URL地址也可以是IP地址(Internet Protocol Address),例如<host name=“127.0.0.1”>,接着,在<String port=host.getPort();//获取端口>中的String port记录的端口的信息,接着,在<publicParam key="timestamp">dynamic:Query:ClassName</publicParam>中,所述的publicParam是公共参数(其中,访问第三方应用,对方一般由于要安全的考虑所有的请求会有一些必定传得参数,一些参数是固定不变的,一些参数是代码动态运行时生成的),所述key是公共参数的名称,所述dynamic是用于说明参数是动态生成的,所述Query是用于说明参数是放在请求头里,所述AddHeader是用于说明参数是放在 请求头里,所述className是用于说明动态参数生成的规则所需要调用的工具类。

其中,所述<url id="newTenant"path="/api2.0/tenant"method="doPostEntity"/>封装路径方法,其中,所述url是用于说明每个业务需要调用不同的路径地址,所述id是用于说明每个业务方法对应不同的唯一标识(这个必须跟定义的业务接口的方法名称一样,程序是通过这个来进行反射的),所述path是用于说明业务不同的路径地址,所述method是用于调用底层HTTP请求基础服务里的方法名称。

当然,本领域技术人员应当能够理解,上述对映射文件的代码实现的方式仅为举例,今后可能出现的包括URL地址、端口、公共参数、封装路径方法等配置参数的内容的映射文件的实现方式,如能使用本申请,均可以以引用的方式包含于此。

具体地,所述接口获取装置12用获取用于访问第三方HTTP服务的接口及与所述接口的动态代理注解,其中,所述接口包括若干接口方法,且所述接口方法的属性与所述HTTP请求的封装路径方法的属性一一对应。

在此,所述接口为HTTP请求调用过程提供的对象之间调用的通道,并且通过对所述接口注入动态代理,能够在HTTP请求调用过程提供了动态代理机制,以实现HTTP请求的顺利完成。

在具体场景中,用于访问第三方HTTP服务的接口的具体代码实现可以但不限于:

public interface BaseClientService{

Map<String,Object>newTenant(Map<String,Object>params);

Map<String,Object>newBaseUser(Map<String,Object>params);

Map<String,Object>addTenantMember(Map<String,Object>params);

……

}

所述接口包括newTenant、newBaseUser和addTenantMember等接口方法,且所述接口方法的属性与前例的映射文件中所述<url>中id的属性 一一对应,以便后续动态代理根据所述接口与所述映射文件的一一对应的关系进行反射,其中,所述接口方法的入参是从HTTP返回的以Map<String,Object>对象形式的字符串,出参是从HTTP返回的字符串序列化成自定义的对象。

当然,本领域技术人员应当能够理解,上述对接口的代码实现的方式仅为举例,今后可能出现的能够提供反射机制来实现对象之间的调用的接口的实现方式,如能使用本申请,均可以以引用的方式包含于此。

接着,所述对象生成装置13将所述接口获取装置12获取的映射文件生成JAVA对象。所述对象生成装置13包括:根据所述映射文件生成JAVA对象,并根据相应所述接口的动态代理注解生成动态代理对象。具体地,可以利用JAXB将所述映射文件中的标签加载到内存并生成相对应的JAVA对象。其中,根据映射文件的配置参数和封装路径方法的内容,所生成的JAVA对象可以包括URL对象、公共参数对象和封装路径方法对象。其中,所述URL对象包括URL地址和端口等信息,所述公共参数对象包括公共参数等信息,所述封装路径方法对象包括所述封装路径方法的属性、路径或其所调用的所述HTTP请求基础服务的方法名称的信息。

在此,将获取的映射文件生成JAVA对象的实现代码可以但不限于:

public class Host{

protected PublicParams publicParams;

protected Urls urls;

protected String name;//

}

其中,所述publicParams(公共参数对象)与映射文件里的<publicParams>(公共参数)标签对应,所述urls(封装路径方法对象)对应映射文件里的<urls>标签(封装路径方法)对应,所述name(URL对象)对用所述映射文件中的<host name>(URL)。

当然,本领域技术人员应当能够理解,上述将获取的映射文件生成JAVA对象的实现代码的方式仅为举例,今后可能出现的JAVA对象生成过程的实现方式,如能使用本申请,均可以以引用的方式包含于此。

进一步地,所述HTTP请求执行装置14包括当获取到对具有动态代理注解的接口进行调用的请求时,利用所述动态代理对象拦截所述请求,并根据所述请求获取相应所述JAVA对象,并利用反射机制调用HTTP请求基础服务中的方法,以完成HTTP请求。

在此,所述HTTP请求执行装置14用于在HTTP请求执行过程中,利用HTTP请求执行装置13中生成的动态代理对象拦截业务对含有动态代理注解的接口的调用,获取HTTP请求执行装置13生成的JAVA对象,并利用反射机制调用HTTP请求基础服务中的方法,以完成HTTP请求。

其中,所述HTTP请求执行装置14具体包括:根据所述请求获取所述JAVA对象,其中,所述JAVA对象包括URL对象、公共参数对象和封装路径方法对象;从所述URL对象中获取URL地址、从所述公共参数对象获取公共参数、并从所述封装路径方法对象中获取路径;将所述公共参数和所述路径封装真正的HTTP请求地址;调用HTTP请求基础服务中的方法,利用所述真正的HTTP请求地址完成一次HTTP调用。

进一步地,所述HTTP请求执行装置14利用反射技术调用HTTP请求基础服务中的方法的子单元。

当WEB容器(一种服务程序,用于处理从客户端发出的请求)启动时,利用JAXB(jackson-module-jaxb-annotations,能够使用Jackson对JAXB注解的支持实现)把自定义的映射文件里的标签,加载到内存生成相对应的JAVA对象;

为每个对象初始化之后,会找到这个对象对应的接口所对应的动态代理注解,并根据所述动态代理注解的属性,生成动态代理对象;

当有业务对相应动态代理注解的接口进行调用的时,动态代理对象就会进行拦截,反射到底层的HTTP请求基础服务,其中,反射过程包括:获取JAVA对象中的HOST对象;从HOST对象中获取URL对象,从URL对象中获取路径、URL地址及公共参数;封装路径;获取公共参数;封装真正的HTTP请求地址;根据所述URL地址,反射调用所述HTTP请求基础服务,完成一次HTTP调用,并利用底层的HTTP请求基础服务的方法发起HTTP请求,完成一次HTTP请求调用。

具体地,所述HTTP请求执行装置14反射调用所述HTTP请求基础服务,完成一次HTTP调用的代码实现可以但不限于如下:

当然,本领域技术人员应当能够理解,上述对反射调用所述HTTP请求基础服务,完成一次HTTP调用的实现代码的方式仅为举例,今后可能出现的反射调用所述HTTP请求基础服务,完成一次HTTP调用的实现方式,如能使用本申请,均可以以引用的方式包含于此。

进一步地,所述HTTP请求基础服务包括基础HTTP请求方法,其中,所述基础HTTP请求方法至少包括以下任一项:

GET:请求指定的页面信息,并返回实体主体的方法;

POST:请求服务器接受所指定的文档作为对所标识的URI的新的从属实体的方法;

PUT:从客户端向服务器传送的数据取代指定的文档的内容的方法;

DELETE:请求服务器删除指定的页面的方法。

此外,所述HTTP请求基础服务还可包括其他HTTP请求方法,例如 HEAD、OPTIONS、TRACE、CONNECT等,此外,还可以由开发人员自行定义HTTP请求方法,在此不做赘述。

所述HTTP请求基础服务的实现代码可以但不限于如下:

public String doGet(String url){}

public String doPost(String url,Map<String,Object>data){}

public String doDelete(String url,Map<String,String>data){}

public String doPut(String url,Map<String,String>data){}

当然,本领域技术人员应当能够理解,上述对所述HTTP请求基础服务的实现代码的方式仅为举例,今后可能出现的所述HTTP请求基础服务的实现方式,如能使用本申请,均可以以引用的方式包含于此。

在一具体的场景中,对HTTP请求进行统一映射之前,可以首先创建对HTTP请求进行统一映射的框架,包括:创建一个用于访问第三方HTTP服务的映射文件,其中,所述映射文件包括配置参数和封装路径方法,其中,配置参数包括所述第三方HTTP服务的URL地址、端口及公共参数;封装路径方法包括:所述封装路径方法的属性、路径及其所调用的所述HTTP请求基础服务的方法名称。接着,在应用层创建用于访问第三方HTTP服务的接口,其中接口包括若干接口方法,若干接口方法与所述映射文件中的封装路径方法的属性(ID)一一对应,以能够通过属性的对应方式从接口对应到映射文件;在应用层,对所述接口注入动态代理注解,所述动态代理注解的属性与所述接口的属性相对应。然后,在应用层的业务方法中,将参数和URL进行逻辑拼接;在底层创建HTTP请求基础服务,所述HTTP请求基础服务中的方法包括基本HTTP请求:GET、POST、PUT和DELETE,此外,还可根据用户需要自定义HTTP请求。

则,当需要向第三方发起HTTP请求时,对HTTP请求进行统一映射的执行过程包括:

1.获取上述创建的用于访问第三方HTTP服务的映射文件、接口及接口的动态代理注解、以及应用层的业务方法;

2.当WEB容器启动时,利用JAXB(jackson-module-jaxb-annotations,能够使用Jackson对JAXB注解的支持实现)把自定义的映射文件里的标 签,加载到内存生成相对应的JAVA对象;

3.为每个对象初始化之后,会找到这个对象对应的接口所对应的动态代理注解,并根据所述动态代理注解的属性,生成动态代理对象;

4.当有业务对相应动态代理注解的接口进行调用的时,动态代理对象就会进行拦截,反射到底层的HTTP请求基础服务,其中,反射过程包括:获取JAVA对象;从JAVA对象中获得URL对象、公用参数对象和封装路径方法对象,从所述URL对象中获取URL地址、从所述公共参数对象获取公共参数、并从所述封装路径方法对象中获取路径;封装路径;获取公共参数;封装真正的HTTP请求地址;根据所述URL地址,反射调用所述HTTP请求基础服务,完成一次HTTP调用。并利用底层的HTTP请求基础服务的方法发起HTTP请求,完成一次HTTP请求调用。

与现有技术相比,所述对HTTP请求进行统一映射的方法和设备通过获取用于访问第三方HTTP服务的映射文件,并获取所述映射文件对应的接口并为所述接口注入反射,其中,所述映射文件将HTTP请求的URL地址、端口、公共参数、和封装路径方法的属性、路径及其调用的HTTP请求基础服务中的方法等配置内容从业务逻辑内容中独立,并将映射文件将所述映射文件与所述接口相对应。当WEB启动时,根据映射文件生成相应JAVA对象,并根据请求调用相应接口对应的反射代理注解生成动态代理对象,则在进行HTTP请求时,动态代理对象会利用根据所述映射文件生成的JAVA对象处理所述请求,并调用HTTP请求基础服务中的方法,完成HTTP请求,从而实现映射文件的一次开发多次复用,从而在简化开发难度提高复用率的情况下实现HTTP请求调用。

在本申请一个典型的配置中,终端、服务网络的设备和可信方均包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM)。内存是计算机可读介质的示例。计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介 质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括非暂存电脑可读媒体(transitory media),如调制的数据信号和载波。

需要注意的是,本申请可在软件和/或软件与硬件的组合体中被实施,例如,可采用专用集成电路(ASIC)、通用目的计算机或任何其他类似硬件设备来实现。在一个实施例中,本申请的软件程序可以通过处理器执行以实现上文所述步骤或功能。同样地,本申请的软件程序(包括相关的数据结构)可以被存储到计算机可读记录介质中,例如,RAM存储器,磁或光驱动器或软磁盘及类似设备。另外,本申请的一些步骤或功能可采用硬件来实现,例如,作为与处理器配合从而执行各个步骤或功能的电路。

另外,本申请的一部分可被应用为计算机程序产品,例如计算机程序指令,当其被计算机执行时,通过该计算机的操作,可以调用或提供根据本申请的方法和/或技术方案。而调用本申请的方法的程序指令,可能被存储在固定的或可移动的记录介质中,和/或通过广播或其他信号承载媒体中的数据流而被传输,和/或被存储在根据所述程序指令运行的计算机设备的工作存储器中。在此,根据本申请的一个实施例包括一个装置,该装置包括用于存储计算机程序指令的存储器和用于执行程序指令的处理器,其中,当该计算机程序指令被该处理器执行时,触发该装置运行基于前述根据本申请的多个实施例的方法和/或技术方案。

对于本领域技术人员而言,显然本申请不限于上述示范性实施例的细节,而且在不背离本申请的精神或基本特征的情况下,能够以其他的具体形式实现本申请。因此,无论从哪一点来看,均应将实施例看作是示范性的,而且是非限制性的,本申请的范围由所附权利要求而不是上述说明限定,因此旨在将落在权利要求的等同要件的含义和范围内的所有变化涵括 在本申请内。不应将权利要求中的任何附图标记视为限制所涉及的权利要求。此外,显然“包括”一词不排除其他单元或步骤,单数不排除复数。装置权利要求中陈述的多个单元或装置也可以由一个单元或装置通过软件或者硬件来实现。第一,第二等词语用来表示名称,而并不表示任何特定的顺序。

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