一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

基于GraphQL的接口构建方法、系统、电子设备及存储介质与流程

2021-12-04 00:19:00 来源:中国专利 TAG:

基于graphql的接口构建方法、系统、电子设备及存储介质
技术领域
1.本发明属于软件工程技术领域,尤其涉及一种基于graphql的接口构建方法、系统、电子设备及存储介质。


背景技术:

2.随着现在app业务越来越复杂,api增长呈爆炸趋势。同时为了满足端上多元化的需求,代码逻辑也越来越复杂,内部逻辑为了复用一些功能模块往往充斥着if...else...,总体而言,项目越来越复杂,维护成本呈指数级上升。而对于客户端,面对逐渐复杂起来的业务而言,往往需要通过多个协议才能够获取到它所需的完整数据。由于对某个协议而言客户端也许只需要其中的某几个字段,这个过程会造成较多的冗余数据;同时需要组合太多协议,导致客户端逻辑复杂,维护困难。
3.为了解决上述问题,同时降低前后端耦合,通常可以引入graphql作为技术方案。根据项目需求,组合一套完整的graphql的schema,在后端实现该schema的解析器resolver,这样客户端可以清晰地知道后端能够提供哪些数据的查询工作,据此根据需要编写查询语句,一次查询即可精确获得结果。而后端则在编写解析器resolver时,组合调用相应的api,获取对应的数据。这个方案相当于前后端的耦合降低了。同时后端考虑api接口时,重心放在粒度划分上,而不是需求上,只需要提供足够小粒度的api即可。这样前后端的代码复杂程度得到了很好的控制。
4.但是引入graphql后,后端仍然需要专人根据需求编写相应的schema和解析器resolver,编译项目,部署发布。通常需要有较专业素养要求,同时也存在部署上线慢,开发周期长等问题。


技术实现要素:

5.本技术实施例提供了一种基于graphql的接口构建方法、系统、电子设备及存储介质,以至少解决现有方法专业素养要求高、部署上线慢、开发周期长的问题。
6.第一方面,本技术实施例提供了一种基于graphql的接口构建方法,包括:graphql组件构建步骤,在后端开发graphql组件,所述graphql组件包括graphql的schema、resolver解析器和服务对象声明;接口能力配置步骤,遍历所有的所述graphql组件,获取所述graphql组件的输入及输出信息,对所述graphql组件进行组合和配置,并进一步生成源码;工程框架执行步骤,将所述源码引入工程,通过所述工程对所述源码编译部署后进行执行。
7.优选的,所述graphql组件构建步骤进一步包括:将所述服务对象以参数形式传入到所述resolver解析器中以供使用。
8.优选的,所述接口能力配置步骤进一步包括:以可视化形式对遍历到的所述graphql组件进行展示,并在可视化界面中以拖拽的形式对所述graphql组件进行组合。
9.优选的,所述工程框架执行步骤进一步包括:在所述工程中引入所述graphql所需
的所有库文件,以提供所述graphql的最基础能力。
10.第二方面,本技术实施例提供了一种基于graphql的接口构建系统,适用于上述一种基于graphql的接口构建方法,包括:graphql组件构建模块,在后端开发graphql组件,所述graphql组件包括graphql的schema、resolver解析器和服务对象声明;接口能力配置模块,遍历所有的所述graphql组件,获取所述graphql组件的输入及输出信息,对所述graphql组件进行组合和配置,并进一步生成源码;工程框架执行模块,将所述源码引入工程,通过所述工程对所述源码编译部署后进行执行。
11.在其中一些实施例中,所述graphql组件构建模块进一步包括:将所述服务对象以参数形式传入到所述resolver解析器中以供使用。
12.在其中一些实施例中,所述接口能力配置模块进一步包括:以可视化形式对遍历到的所述graphql组件进行展示,并在可视化界面中以拖拽的形式对所述graphql组件进行组合。
13.在其中一些实施例中,所述工程框架执行模块进一步包括:在所述工程中引入所述graphql所需的所有库文件,以提供所述graphql的最基础能力。
14.第三方面,本技术实施例提供了一种电子设备,包括存储器、处理器以及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现如上述第一方面所述的一种基于graphql的接口构建方法。
15.第四方面,本技术实施例提供了一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现如上述第一方面所述的一种基于graphql的接口构建方法。
16.本技术可应用于云服务能力技术领域。相比于相关技术,本技术实施例提供的一种基于graphql的接口构建方法,提出一种自动化构建方案,可以实现无代码可视化的生成graphql的后端schema,解析器resolver。只需要根据现有graphql单元的能力进行排列组合,就可以自动生成对应的schema和resolver,一键部署。
17.所以,本发明可以极大降低graphql后端对专业知识的要求,大幅提高迭代效率,只需要对需求有清晰明确的认识,同时熟悉后端api模块可以提供的查询内容,即可通过简单的操作实现接口的定制。非常适合当前快速迭代,功能多元的应用开发需求。
附图说明
18.此处所说明的附图用来提供对本技术的进一步理解,构成本技术的一部分,本技术的示意性实施例及其说明用于解释本技术,并不构成对本技术的不当限定。在附图中:
19.图1为本发明的基于graphql的接口构建方法流程图;
20.图2为本发明的基于graphql的接口构建系统的框架图;
21.图3为本发明的电子设备的框架图;
22.图4为graphql组件开发流程示意图;
23.以上图中:
24.1、graphql组件构建模块;2、接口能力配置模块;3、工程框架执行模块;60、总线;61、处理器;62、存储器;63、通信接口。
具体实施方式
25.为了使本技术的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本技术进行描述和说明。应当理解,此处所描述的具体实施例仅仅用以解释本技术,并不用于限定本技术。基于本技术提供的实施例,本领域普通技术人员在没有作出创造性劳动的前提下所获得的所有其他实施例,都属于本技术保护的范围。
26.显而易见地,下面描述中的附图仅仅是本技术的一些示例或实施例,对于本领域的普通技术人员而言,在不付出创造性劳动的前提下,还可以根据这些附图将本技术应用于其他类似情景。此外,还可以理解的是,虽然这种开发过程中所作出的努力可能是复杂并且冗长的,然而对于与本技术公开的内容相关的本领域的普通技术人员而言,在本技术揭露的技术内容的基础上进行的一些设计,制造或者生产等变更只是常规的技术手段,不应当理解为本技术公开的内容不充分。
27.在本技术中提及“实施例”意味着,结合实施例描述的特定特征、结构或特性可以包含在本技术的至少一个实施例中。在说明书中的各个位置出现该短语并不一定均是指相同的实施例,也不是与其它实施例互斥的独立的或备选的实施例。本领域普通技术人员显式地和隐式地理解的是,本技术所描述的实施例在不冲突的情况下,可以与其它实施例相结合。
28.除非另作定义,本技术所涉及的技术术语或者科学术语应当为本技术所属技术领域内具有一般技能的人士所理解的通常意义。本技术所涉及的“一”、“一个”、“一种”、“该”等类似词语并不表示数量限制,可表示单数或复数。本技术所涉及的术语“包括”、“包含”、“具有”以及它们任何变形,意图在于覆盖不排他的包含;例如包含了一系列步骤或模块(单元)的过程、方法、系统、产品或设备没有限定于已列出的步骤或单元,而是可以还包括没有列出的步骤或单元,或可以还包括对于这些过程、方法、产品或设备固有的其它步骤或单元。
29.graphql是一种基于api的查询语言,由facebook发起并开源。它提供了一种高效、强大且灵活的数据提供方式。graphql有强制的类型约束,按需检索数据,支持完善,开发快速等优势。
30.schema是graphql的api的基础。它清晰的定义了每个api支持的操作,包括输入的参数和返回的内容。它通过sdl(graphql schema definition language)来定义。用户在定义schema的时候,可以自动根据schema生成相应的文档。sdl是定义graphql schema的模式定义语言。
31.resolver是graphql的解析器。前述schema的每一个字段如何获取,都需要对应的解析器函数来完成。服务器收到查询时,它将调用查询有效负载中指定的字段的所有解析器函数,待解析器函数都返回后将组织数据并返回客户端。
32.graphql sdl支持多种数据类型。scalar是基本的数据类型,例如:string,int,boolean,float等等。由于它不支持64位整数,无符号整数,所以一般需要扩充来满足开发需求。
33.模式拼接英文为schema stitching。可以将来源不同的多个graphql服务组合起来的技术方案。在graphql

tool库中有它的实现。
34.以下,结合附图详细介绍本发明的实施例:
35.图1为本发明的基于graphql的接口构建方法流程图,请参见图1,本发明基于graphql的接口构建方法包括如下步骤:
36.s1:在后端开发graphql组件,所述graphql组件包括graphql的schema、resolver解析器和服务对象声明。可选的,将所述服务对象以参数形式传入到所述resolver解析器中以供使用。
37.在具体实施中,不同于现有方案,后端开发api接口后,还需要完成其所能支持的查询/变更的schema,以及对应的resolver解析器。实现这些额外的graphql功能的api,称为graphql组件。graphql组件开发流程如图4所示。其中的“服务对象声明”是指,在resolver解析器中获取字段的时候,将访问开发好的api来获取数据,所以需要一个“服务对象”来访问这些数据。举例说明,这个“服务对象”可能是一个http对象,以访问http接口;还可以是一个数据库对象,以访问数据库。这个对象将会以参数形式传入到resolver中供使用。
38.s2:遍历所有的所述graphql组件,获取所述graphql组件的输入及输出信息,对所述graphql组件进行组合和配置,并进一步生成源码。可选的,以可视化形式对遍历到的所述graphql组件进行展示,并在可视化界面中以拖拽的形式对所述graphql组件进行组合。
39.在具体实施中,遍历所有的graphql组件,获取其输入和输出信息,然后以可视化的形式展示graphql组件列表。它提供一个视图,在视图中,用户通过拖拽的形式自由组合前述模块。组合后,它将自动汇总所需要的输入参数和可供使用的结果。用户可以自由组合可供使用的结果,也可以更改字段的实际展示名称。最后点击确定,一条graphql的查询schema和resolver将自动以源码形式生成出来,并放入基础graphql工程指定的位置。用户在完成根据需求组合所有的schema后,点击发布,则会开启构建和自动发布流程。
40.s3:将所述源码引入工程,通过所述工程对所述源码编译部署后进行执行。可选的,在所述工程中引入所述graphql所需的所有库文件,以提供所述graphql的最基础能力。
41.在具体实施中,基础graphql工程提供最基础的graphql所需能力,并引入所有需要的库文件。具体的,若要扩充graphql的scalar数据类型,就需要放在这里。在api能力配置中生成所有的graphql schema和解析器resolver之后,工程将源码引入,如果用户在api能力配置可视化界面中点击了发布,则该工程被统一编译部署,即具备了相应的查询能力。
42.基于上述步骤,本技术所提供的整体业务流程如下:
43.a.后端结合当前业务能力,业务需求,可复用性等综合考虑,确定相应的api接口;
44.b.开发人员开发实现api接口,同时完成graphql组件模块;
45.c.具体到不同的客户端,不同的应用场合产生具体的产品需求;
46.d.产品负责人根据需求操作api能力配置模块完成并上线graphql的后端;
47.e.客户端据此开发实现功能需求。
48.需要说明的是,在上述流程中或者附图的流程图中示出的步骤可以在诸如一组计算机可执行指令的计算机系统中执行,并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。
49.本技术实施例提供了一种基于graphql的接口构建系统,适用于上述的一种基于graphql的接口构建方法。如以下所使用的,术语“单元”、“模块”等可以实现预定功能的软件和/或硬件的组合。尽管以下实施例所描述的装置较佳地以软件来实现,但是硬件、或者
软件和硬件的组合的实现也是可能并被构想的。
50.图2为根据本发明的基于graphql的接口构建系统的框架图,请参见图2,包括:
51.graphql组件构建模块1:在后端开发graphql组件,所述graphql组件包括graphql的schema、resolver解析器和服务对象声明。可选的,将所述服务对象以参数形式传入到所述resolver解析器中以供使用。
52.在具体实施中,不同于现有方案,后端开发api接口后,还需要完成其所能支持的查询/变更的schema,以及对应的resolver解析器。实现这些额外的graphql功能的api,称为graphql组件。graphql组件开发流程如图4所示。其中的“服务对象声明”是指,在resolver解析器中获取字段的时候,将访问开发好的api来获取数据,所以需要一个“服务对象”来访问这些数据。举例说明,这个“服务对象”可能是一个http对象,以访问http接口;还可以是一个数据库对象,以访问数据库。这个对象将会以参数形式传入到resolver中供使用。
53.接口能力配置模块2:遍历所有的所述graphql组件,获取所述graphql组件的输入及输出信息,对所述graphql组件进行组合和配置,并进一步生成源码。可选的,以可视化形式对遍历到的所述graphql组件进行展示,并在可视化界面中以拖拽的形式对所述graphql组件进行组合。
54.在具体实施中,遍历所有的graphql组件,获取其输入和输出信息,然后以可视化的形式展示graphql组件列表。它提供一个视图,在视图中,用户通过拖拽的形式自由组合前述模块。组合后,它将自动汇总所需要的输入参数和可供使用的结果。用户可以自由组合可供使用的结果,也可以更改字段的实际展示名称。最后点击确定,一条graphql的查询schema和resolver将自动以源码形式生成出来,并放入基础graphql工程指定的位置。用户在完成根据需求组合所有的schema后,点击发布,则会开启构建和自动发布流程。
55.工程框架执行模块3:将所述源码引入工程,通过所述工程对所述源码编译部署后进行执行。可选的,在所述工程中引入所述graphql所需的所有库文件,以提供所述graphql的最基础能力。
56.在具体实施中,基础graphql工程提供最基础的graphql所需能力,并引入所有需要的库文件。具体的,若要扩充graphql的scalar数据类型,就需要放在这里。在api能力配置中生成所有的graphql schema和解析器resolver之后,工程将源码引入,如果用户在api能力配置可视化界面中点击了发布,则该工程被统一编译部署,即具备了相应的查询能力。
57.基于上述模块,本技术所提供的整体业务流程如下:
58.a.后端结合当前业务能力,业务需求,可复用性等综合考虑,确定相应的api接口;
59.b.开发人员开发实现api接口,同时完成graphql组件模块;
60.c.具体到不同的客户端,不同的应用场合产生具体的产品需求;
61.d.产品负责人根据需求操作api能力配置模块完成并上线graphql的后端;
62.e.客户端据此开发实现功能需求。
63.另外,结合图1描述的一种基于graphql的接口构建方法可以由电子设备来实现。图3为本发明的电子设备的框架图。
64.电子设备可以包括处理器61以及存储有计算机程序指令的存储器62。
65.具体地,上述处理器61可以包括中央处理器(cpu),或者特定集成电路
standards association local bus,简称为vlb)总线或其他合适的总线或者两个或更多个以上这些的组合。在合适的情况下,总线60可包括一个或多个总线。尽管本技术实施例描述和示出了特定的总线,但本技术考虑任何合适的总线或互连。
72.该电子设备可以执行本技术实施例中的一种基于graphql的接口构建方法。
73.另外,结合上述实施例中的一种基于graphql的接口构建方法,本技术实施例可提供一种计算机可读存储介质来实现。该计算机可读存储介质上存储有计算机程序指令;该计算机程序指令被处理器执行时实现上述实施例中的任意一种基于graphql的接口构建方法。
74.而前述的存储介质包括:u盘、移动硬盘、只读存储器(readonly memory,简称为rom)、随机存取存储器(random access memory,简称为ram)、磁碟或者光盘等各种可以存储程序代码的介质。
75.以上所述实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
76.以上所述实施例仅表达了本技术的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本技术构思的前提下,还可以做出若干变形和改进,这些都属于本技术的保护范围。因此,本技术专利的保护范围应以所附权利要求为准。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献