掌桥专利:专业的专利平台
掌桥专利
首页

一种实现兼容HTTP请求的RPC框架的方法

文献发布时间:2024-04-18 19:58:21


一种实现兼容HTTP请求的RPC框架的方法

技术领域

本发明涉及数据分析与处理的技术领域,具体为一种实现兼容HTTP请求的RPC框架的方法。

背景技术

目前在各个软件行业的公司中,随着软件系统产品的持续发展和迭代,功能不断的扩展,使得原来的单体项目越来越臃肿,难以维护。这时候就需要对项目根据模块进行拆分,服务化改造,为了解决模块之间的相互调用,则需要引入RPC。但是现在常用的服务化RPC框架,如Dubbo都是需要很多配套中间件,不利于部署。而且对项目进行服务化之后,既要满足模块之间的相互调用,也需要完成前端用户交互所需接口,导致开发成本增加,可读性变差,也不利于代码的维护。

发明内容

针对上述问题,本发明提供了一种实现兼容HTTP请求的RPC框架的方法,该方法属于轻量级框架,不依赖于其他中间件、利于部署;且提升开发的效率,减少代码冗余提升代码的可读性。

一种实现兼容HTTP请求的RPC框架的方法,其特征在于,其基于spring boot,其包括如下步骤:

1)服务端定义API时,在函数上添加注解标识所对应的HTTP请求方法,然后实现其业务逻辑;

2)服务端应用启动时,扫描步骤1)中所定义的API,加载其函数,读取函数上的注解,生成相应的HTTP监听路由,并创建统一的HTTP请求预处理方法,对HTTP请求中的进行参数转换并转发给对应的API函数,进行处理;

3)客户端通过动态代理初始化API对应的代理对象、即API动态代理,负责将RPC直接调用的请求根据API的注解转换成匹配的HTTP请求,并对服务端返回的HTTP响应解析,对执行成功的数据转换成API函数的直接返回对象,将执行失败的结果转换成异常信息。

其进一步特征在于:

所述注解标识包括:HTTP请求的方法、访问的路由地址、以及可选的扩展项访问,其中HTTP请求的方法包括GET请求、POST请求、POST-FORM请求,可选的扩展项访问包括访问的频率限制、返回结果的缓存配置;

所述HTTP监听路由需要根据API函数的注解创建匹配的RESTFul路由,根据HTTP请求的方法创建对应的预处理方法;

所述预处理方法需要根据不同的HTTP请求方法,获取HTTP请求信息中不同位置的数据,组合成API函数所需的参数

对于GET请求获取HTTP URL中所带参数组合成为键值对,POST-FORM请求则直接获取HTTP中携带的键值对参数,对于POST请求则将HTTP BODY解析成为JSON格式,然后根据API函数的参数列表,根据参数的名称和类型,对从请求中获取的参数进行逐步转换;

所述API动态代理需要根据API函数的注解对RPC的调用请求进行参数转换,使其符合注解对应的RESTFul路由的请求参数格式;并且结合注解中的访问路由地址转成HTTP请求,并对服务端返回的HTTP响应解析;

所述HTTP响应解析需要区分HTTP的响应状态,在请求成功时对响应数据安装API函数的返回类型进行转换,请求失败时,则处理为程序异常。

与现有技术相比,本发明具有以下有益效果:其提供轻量级实现方案,减少了对于第三方中间件的依赖,并且通过RPC调用的过程中加入对HTTP请求的转换和解析,解决了RPC调用与HTTP请求不兼容的问题,提升了开发效率。

附图说明

图1为本发明的执行流程图;

图2为本发明的调用时序图。

具体实施方式

一种实现兼容HTTP请求的RPC框架的方法,其基于spring boot,其包括如下步骤:

1)服务端定义API时,在函数上添加注解标识所对应的HTTP请求方法,然后实现其业务逻辑;

2)服务端应用启动时,扫描步骤1)中所定义的API,加载其函数,读取函数上的注解,生成相应的HTTP监听路由,并创建统一的HTTP请求预处理方法,对HTTP请求中的进行参数转换并转发给对应的API函数,进行处理;

3)客户端通过动态代理初始化API对应的代理对象、即API动态代理,负责将RPC直接调用的请求根据API的注解转换成匹配的HTTP请求,并对服务端返回的HTTP响应解析,对执行成功的数据转换成API函数的直接返回对象,将执行失败的结果转换成异常信息。

具体实施例,见图1和图2,其包括如下步骤:

1)服务端定义API时,先定义API注解命名为ModuleApi,其内定义属性method包含GET、POST以及POST-FORM,用于指定该函数所对应的请求方式,GET用于获取服务端业务数据,POST和POST-FORM用于提交或者修改业务数据,区别在于POST使用raw方式发送数据,支持JSON结果数据,POST-FORM使用键值对方式发送数据,可支持文件的传输;ModuleApi的属性mapping则用于申请HTTP请求URI地址;将ModuleApi注解定义在函数上,然后实现其业务逻辑;

2)服务端应用启动时,扫描步骤1)中所定义的API,加载其函数,读取函数上的注解,生成相应的HTTP监听路由,并创建统一的HTTP请求预处理方法,根据HTTP请求的URI地址,扫描所有API的ModuleApi注解,根据注解上mapping的值进行匹配,定位目标API函数,若不存在匹配的则返回404错误;

然后根据ModuleApi的Method进行不同方式的参数转换:GET方法将HTTPQueryString中获取参数数据,POST则从Request Body获取文本转成JSON数据,POST-FORM则将QueryString与Form-data组合在一起作为参数数据;在搜集完请求参数数据之后,通过反射获取API函数的参数列表,获取参数的名称与类型,对简单类型的参数通过参数名字匹配直接类型转换,对于复杂类型的参数,通过JSON进行类型转换,若存在参数不一致则丢弃无用参数;通过反射调用API函数,执行函数内的业务逻辑,并根据业务执行结果封装HTTP响应内容(状态码+响应结果+状态说明);

3)客户端通过动态代理初始化API对应的代理对象,负责将RPC直接调用的请求根据API的注解转换成匹配的HTTP请求,并对服务端返回的HTTP响应进行解析,根据HTTP请求结果的状态码判断执行结果:200标识执行成功,则获取响应结果,转换成JSON格式数据,根据反射获取API函数的返回对象类型,通过JSON解析进行类型转换;状态码非200的情况下,则获取状态说明,根据其内容生成自定义的异常抛出,交给程序处理。

在本实施例中,注解标识需要包含:HTTP请求的方法(GET、POST、POST-FORM)、访问的路由地址、以及可选的扩展项访问:访问的频率限制、返回结果的缓存配置。

在本实施例中,HTTP监听路由需要根据API函数的注解创建匹配的RESTFul路由,根据HTTP请求的方法创建对应的预处理方法。

在本实施例中,预处理方法需要根据不同的HTTP请求方法,获取HTTP请求信息中不同位置的数据,组合成API函数所需的参数:对于GET请求获取HTTP URL中所带参数组合成为键值对,POST-FORM请求则直接获取HTTP中携带的键值对参数,对于POST请求则将HTTPBODY解析成为JSON格式,然后根据API函数的参数列表,根据参数的名称和类型,对从请求中获取的参数进行逐步转换。

在本实施例中,API动态代理需要根据API函数的注解对RPC的调用请求进行参数转换,使其符合注解对应的RESTFul路由的请求参数格式;并且结合注解中的访问路由地址转成HTTP请求,并对服务端返回的HTTP响应解析。

在本实施例中,HTTP响应解析需要区分HTTP的响应状态,在请求成功时对响应数据安装API函数的返回类型进行转换,请求失败时,则处理为程序异常。

文中,Spring Boot是由Pivotal团队提供的开元框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程,该框架使用了特定的方式来进行配置,从而使开发人员不再需要定义样板化的配置。

对于本领域技术人员而言,显然本发明不限于上述示范性实施例的细节,而且在不背离本发明的精神或基本特征的情况下,能够以其他的具体形式实现本发明。因此,无论从哪一点来看,均应将实施例看作是示范性的,而且是非限制性的,本发明的范围由所附权利要求而不是上述说明限定,因此旨在将落在权利要求的等同要件的含义和范围内的所有变化囊括在本发明内。不应将权利要求中的任何附图标记视为限制所涉及的权利要求。

此外,应当理解,虽然本说明书按照实施方式加以描述,但并非每个实施方式仅包含一个独立的技术方案,说明书的这种叙述方式仅仅是为清楚起见,本领域技术人员应当将说明书作为一个整体,各实施例中的技术方案也可以经适当组合,形成本领域技术人员可以理解的其他实施方式。

相关技术
  • 一种USB接口兼容不同模块实现调光的系统及其方法
  • 一种多驱动兼容的控制装置和实现方法
  • 一种实现多型号加密键盘兼容跨平台应用的方法
  • 一种在正反隔离装置实现HTTP请求交互的方法及系统
  • 一种用于实现HTTP请求服务的系统及其方法
技术分类

06120116480605