一种通过接口文档自动生成网关代码的方法与流程

文档序号:37120968发布日期:2024-02-22 21:25阅读:15来源:国知局
一种通过接口文档自动生成网关代码的方法与流程

本发明涉及计算机,特别涉及一种通过接口文档自动生成网关代码的方法。


背景技术:

1、网关用于连接多个不同的网络,传统的http网关虽然能够实现数据的跨网络传输,但存在较多的缺陷:

2、1、过度获取(over-fetching)和欠获取(under-fetching):restful api(一种基于http协议的软件架构风格,用于创建、设计和提供web服务)往往使用固定的终结点来提供数据,这可能导致在某些情况下客户端获取过多或不足的数据,从而浪费带宽或需要多次请求。

3、2、多次请求:restful api往往需要多次请求才能获取完整的相关数据,尤其是在复杂的数据关联场景中,这可能导致性能下降。

4、3、版本管理复杂:当api发生变化时,需要使用版本控制来确保不影响现有客户端,这可能导致管理和维护不同版本的api变得复杂。

5、4、灵活性不足:restful api往往需要为每个特定的客户端需求创建专门的终结点,这可能导致api缺乏灵活性,无法满足不同客户端的定制需求。

6、5、耦合性增加:在一些情况下,restful api的设计可能导致客户端和服务器之间的耦合性增加,难以实现松耦合架构。


技术实现思路

1、本发明提供了一种通过接口文档自动生成网关代码的方法,能够避免过度获取或不足获取的问题,避免在不同服务间传递冗余数据,从而减少网络带宽的消耗,降低网络延迟。

2、为了达到上述目的,本申请提供如下技术方案:

3、一种通过接口文档自动生成网关代码的方法,包括以下步骤:

4、s100,获取待联合的graphql服务;

5、s200,为各graphql服务创建用于组织数据库中各对象的模式,采用指令定义数据关联,并整合各graphql服务的信息;

6、s300,将各graphql服务的信息注册至中央的联合网关中,并部署联合网关;

7、s400,获取查询请求,由联合网关解析所述查询请求,并识别查询请求中涉及的类型和字段;

8、s500,根据查询请求,生成若干子查询;

9、s600,将各graphql服务的信息与查询请求中涉及的类型和字段进行匹配,并根据匹配结果将各子查询发送至相应的graphql服务进行处理;

10、s700,联合网关获取并整合各graphql服务的处理结果,生成最终查询结果。

11、进一步,所述指令包括@key指令和@extend指令;

12、所述采用指令定义数据关联包括:采用@key指令标识本graphql服务引用的外部领域实体的主键id,所述@key指令的参数指定了用于标识类型的字段;采用@extend指令标识其他graphql服务的领域实体在本graphql服务内部的引用。

13、进一步,s300包括:

14、s301,将各graphql服务的信息注册至中央的联合网关中;

15、s302,编写网关代码生成器代码,并配置联合网关后台各graphql服务的地址;

16、s303,启动联合网关,调用各graphql服务的模式,并验证各graphql服务的模式是否正确,若是,则将各graphql服务的模式整合为联合网关的模式,并生成联合网关的调用代码;

17、s304,测试联合网关的调用代码,并部署联合网关。

18、进一步,所述对象包括类型、字段、查询和变更操作。

19、本发明的原理及优点在于:

20、1、分布式系统整合:本方案中,通过联合网关将多个独立的graphql服务整合成一个联合的服务,对于分布式系统而言,不同graphql服务可以独立开发、部署和维护,而联合网关仅需要负责整合各graphql服务,并提供统一的入口,便于管理与数据查询。

21、2、灵活的数据查询:联合网关可以满足用户按需查询所需的数据,接收到查询请求后,由联合网关对查询请求进行分析,再分配子查询至相应的graphql服务进行处理,相对于传统的http网关而言,避免了过度获取或不足获取的问题。采用本方案,客户端可以精确指定需要的字段和关联,从而减少不必要的数据传输,提升数据查询效率。

22、3、避免数据冗余:联合网关解析查询请求,再根据数据关联来查询不同的graphql服务,避免在不同graphql服务间传递冗余数据,从而减少网络带宽的消耗。

23、4、服务自治性:不同的graphql服务可以独立开发和维护,因此可以根据业务需求和技术栈选择最适合的实现方式。

24、5、关联和联合查询:联合网关支持在不同服务之间定义关联,采用@key指令标识本graphql服务引用的外部领域实体的主键id,使得在联合查询中获取关联数据更加简单。

25、6、请求批处理:联合网关可以在后台自动将多个请求合并为一个,从而减少网络延迟。其原理在于,graphql服务具有批处理能力,graphql作为一种api查询语言,在它的一次请求中,可以发送多个查询指令,同时若后台服务器实现了批处理请求的接口,那么多个查询请求会使用批处理的接口完成请求。比如对于根据用户名查询用户信息的接口,前端若需要查询多个用户的数据,根据graphql的设计,可以在一次请求发送两个查询指令,后端通过批处理数据加载器加载多个用户的数据并返回。



技术特征:

1.一种通过接口文档自动生成网关代码的方法,其特征在于:包括以下步骤:

2.根据权利要求1所述的通过接口文档自动生成网关代码的方法,其特征在于:所述指令包括@key指令和@extend指令;

3.根据权利要求1所述的通过接口文档自动生成网关代码的方法,其特征在于:s300包括:

4.根据权利要求1所述的通过接口文档自动生成网关代码的方法,其特征在于:所述对象包括类型、字段、查询和变更操作。


技术总结
本发明涉及计算机技术领域,尤其是一种通过接口文档自动生成网关代码的方法,包括以下步骤:S100,获取待联合的GraphQL服务;S200,为各GraphQL服务创建用于组织数据库中各对象的模式,采用指令定义数据关联,并整合各GraphQL服务的信息;S300,将各GraphQL服务的信息注册至中央的联合网关中,并部署联合网关;S400,解析查询请求,并识别查询请求中涉及的类型和字段;S500,生成若干子查询;S600,将各GraphQL服务的信息与查询请求中涉及的类型和字段进行匹配,将各子查询发送至相应的GraphQL服务进行处理;S700,获取并整合各GraphQL服务的处理结果,生成最终查询结果。采用本方案,能够避免过度获取或不足获取的问题,避免在不同服务间传递冗余数据,从而减少网络带宽的消耗,降低网络延迟。

技术研发人员:梅竹,刘聪,苏迪,莫彬
受保护的技术使用者:盛宝金融科技有限公司
技术研发日:
技术公布日:2024/2/21
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1