一种生成GraphQL前端操作接口的方法及装置与流程

文档序号:20874526发布日期:2020-05-26 16:18阅读:253来源:国知局
一种生成GraphQL前端操作接口的方法及装置与流程

本发明涉及计算机网络应用开发领域,尤其涉及一种生成graphql前端操作接口的方法及装置。



背景技术:

graphql是目前计算机网络应用开发领域中的一种革命性的api工具,与传统的restfulapi不同,无需在服务端预定义客户端所需要的操作数据,而是可以让客户端直接在请求中指定所需要的操作数据。

graphql既是一种用于api的查询语言,也是一个满足数据查询的运行时。graphql对api中的数据提供了一套易于理解的完整描述,使得客户端能够准确地获得需要的数据,而且没有任何冗余,也让api更容易地随着时间推移而演进,还能用于构建强大的开发人员工具。例如,通过高级语言实现的api向graphql服务端发出一个graphql请求就能准确获得你想要的数据,不多不少。graphql请求总是返回可预测的结果。使用graphql可以让开发工作或查询工作进行得又快又稳,因为控制数据的是应用,而不是服务器。

graphql查询不仅能够获得资源的属性,还能沿着资源间的引用关系进一步递归查询。典型的restfulapi请求多个资源时需要载入多个url,而graphql可以通过一次请求就能够获取所需要的所有数据。因此,即使是在比较慢的移动网络连接下,使用graphql的应用的响应速度也能表现得足够迅速。

虽然graphql比restfulapi更具优势,但是开发人员仍然需要根据用户需求(对应于具体的页面操作)来逐一编写查询语句(即,graphql专用的前端操作接口),然后再在客户端通过使用高级编程语言编写的函数(即,方法)来调用各个前端操作接口。更具体地,开发人员目前通常是通过graphql提供的(联机)帮助文档快速查询想要的数据(包括所涉及的对象和对象类型、对象中的字段、字段的类型等),但是当类型和字段过多的时候,需要人工维护的成本过大,数据转换也没法统一。因此,页面逻辑越复杂,类型和字段就越多,编写成本就越大。

另外,开发人员会根据类型在项目中维护和管理对应的接口列表,当graphql的字段发生变化,也需要到指定文件里面修改schema,维护和管理的成本也比较大。而且,开发人员在维护数据和数据转换上并没有通用的方案,有时候是在api的文件里面,有时候是在view层的代码中。

因此,为了简化开发人员的开发操作的过程,提高开发效率,需要提出新的技术方案。



技术实现要素:

根据本发明的生成graphql前端操作接口的方法,包括:

通过gui向开发人员显示graphql服务端所支持的所有类型和对象的信息;

通过gui获取开发人员需要操作的选定对象的选定信息;

基于选定对象的选定信息,自动构建graphql的前端操作接口,

其中,类型包括schema类型,选定信息包括选定对象中的选定字段的属性、一个或多个选定字段的具体字段值,前端操作包括query、mutation和subscription中的至少一种。

根据本发明的生成graphql前端操作接口的方法,还包括:

在本地和/或在服务器端存储前端操作接口。

根据本发明的生成graphql前端操作接口的方法,还包括:

通过开发人员定义的高级编程语言函数来调用前端操作接口,以将前端操作发送至graphql服务端。

根据本发明的生成graphql前端操作接口的方法,还包括:

接收来自graphql服务端的、前端操作的执行结果;

对执行结果中的一个或多个字段值进行格式转换。

根据本发明的生成graphql前端操作接口的方法,还包括:

获取graphql服务端支持的所有类型和对象的信息;

在本地存储graphql服务端所支持的所有类型和对象的信息。

根据本发明的生成graphql前端操作接口的装置,包括:

gui模块,用于向开发人员显示graphql服务端所支持的所有类型和对象的信息,以及,用于获取开发人员需要操作的选定对象的选定信息;

前端操作接口构建模块,用于基于选定对象的选定信息,自动构建graphql的前端操作接口,

其中,类型包括schema类型,选定信息包括选定对象中的选定字段的属性、一个或多个选定字段的具体字段值,前端操作包括query、mutation和subscription中的至少一种。

根据本发明的生成graphql前端操作接口的装置,还包括:

第一存储模块,用于在本地存储前端操作接口。

根据本发明的生成graphql前端操作接口的装置,还包括:

函数调用模块,用于通过开发人员定义的高级编程语言函数来调用前端操作接口,以将前端操作发送至graphql服务端。

根据本发明的生成graphql前端操作接口的装置,还包括:

接收模块,用于接收来自graphql服务端的、前端操作的执行结果;

格式转换模块,用于对执行结果中的一个或多个字段值进行格式转换。

根据本发明的生成graphql前端操作接口的装置,还包括:

第一信息获取模块,用于获取graphql服务端支持的所有类型和对象的信息;

第二存储模块,用于在本地存储graphql服务端所支持的所有类型和对象的信息。

根据本发明的上述技术方案,能够快速生成前端操作接口,不需要开发人员手动编写代码。

附图说明

并入到说明书中并且构成说明书的一部分的附图示出了本发明的实施例,并且与相关的文字描述一起用于解释本发明的原理。在这些附图中,类似的附图标记用于表示类似的要素。下面描述中的附图是本发明的一些实施例,而不是全部实施例。对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,可以根据这些附图获得其他的附图。

图1示例性地示出了根据本发明的生成graphql前端操作接口的方法的示意流程图。

图2示例性地示出了根据本发明的生成graphql前端操作接口的装置的示意框图。

图3示例性地示出了根据本发明的生成graphql前端操作接口的方法的一个具体实施例的示意流程图。

图4示例性地示出了根据本发明的生成graphql前端操作接口的方法的另一个具体实施例的示意流程图。

具体实施方式

为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明的一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互任意组合。

图1示例性地示出了根据本发明的生成graphql前端操作接口的方法的示意流程图。

如图1的实线框所示,根据本发明的生成graphql前端操作接口的方法,包括:

步骤s102:通过gui向开发人员显示graphql服务端所支持的所有类型和对象的信息;

步骤s104:通过gui获取开发人员需要操作的选定对象的选定信息;

步骤s106:基于选定对象的选定信息,自动构建graphql的前端操作接口(即,前端操作的代码),

其中,类型包括schema类型,选定信息包括选定对象中的选定字段的属性、一个或多个选定字段的具体字段值,前端操作包括query、mutation和subscription中的至少一种。

可选地,如图1的虚线框所示,根据本发明的生成graphql前端操作接口的方法,还包括:

步骤s108:在本地和/或在服务器端存储前端操作接口。

可选地,如图1的虚线框所示,根据本发明的生成graphql前端操作接口的方法,还包括:

步骤s110:通过开发人员定义的高级编程语言函数来调用前端操作接口,以将前端操作发送至graphql服务端。

可选地,如图1的虚线框所示,根据本发明的生成graphql前端操作接口的方法,还包括:

步骤s112:接收来自graphql服务端的、前端操作的执行结果;

步骤s114:对执行结果中的一个或多个字段值进行格式转换。

可选地,如图1的虚线框所示,根据本发明的生成graphql前端操作接口的方法,还包括:

步骤s116:获取graphql服务端支持的所有类型和对象的信息;

步骤s118:在本地存储graphql服务端所支持的所有类型和对象的信息。

图2示例性地示出了根据本发明的生成graphql前端操作接口的装置200的示意框图。

如图2的实线框所示,根据本发明的生成graphql前端操作接口的装置200包括:

gui模块201,用于向开发人员显示graphql服务端所支持的所有类型和对象的信息,以及,用于获取开发人员需要操作的选定对象的选定信息;

前端操作接口构建模块203,用于基于选定对象的选定信息,自动构建graphql的前端操作接口,

其中,类型包括schema类型,选定信息包括选定对象中的选定字段的属性、一个或多个选定字段的具体字段值,前端操作包括query、mutation和subscription中的至少一种。

可选地,如图2的虚线框所示,生成graphql前端操作接口的装置200还包括:

第一存储模块205,用于在本地存储前端操作接口。

可选地,如图2的虚线框所示,生成graphql前端操作接口的装置200还包括:

函数调用模块207,用于通过开发人员定义的高级编程语言函数来调用前端操作接口,以将前端操作发送至graphql服务端。

可选地,如图2的虚线框所示,生成graphql前端操作接口的装置200还包括:

接收模块209,用于接收来自graphql服务端的、前端操作的执行结果;

格式转换模块211,用于对执行结果中的一个或多个字段值进行格式转换。

可选地,如图2的虚线框所示,生成graphql前端操作接口的装置200还包括:

第一信息获取模块213,用于获取graphql服务端支持的所有类型和对象的信息;

第二存储模块215,用于在本地存储graphql服务端所支持的所有类型和对象的信息。

为了使本领域技术人员更清楚地理解根据本发明的上述技术方案,下面将结合具体实施例进行详细描述。

图3示例性地示出了根据本发明的生成graphql前端操作接口的方法的一个具体实施例的示意流程图。

图4示例性地示出了根据本发明的生成graphql前端操作接口的方法的另一个具体实施例的示意流程图。

如图3所示,该具体实施例包括以下具体步骤:

1、配置graphql。

例如,配置graphql可以包括以下操作:

在配置graphql时,需要配置对应业务的接口(例如,添加对应业务接口的url地址)和已授权该接口的token(用于进行用户身份认证和权限管理)并存储到服务端。

2、解析graphql类型(type)。

例如,解析graphql类型可以包括以下操作:

配置完graphql之后,可以进入到(上述gui中的)类型管理页,根据graphql服务端中已配置的接口可以获取所有的类型,从而获取全量的类型和字段,解析所有类型,如图4所示,可以包括另一个具体实施例中的以下具体步骤:

a、根据graphql提供的接口,可以获取到扁平化的所有类型。

b、获取graphql查询(query)、graphql修改(mutation)和graphql(subscription)订阅根类型(roottype)(进行遍历操作)。

c、根据类型中的fields遍历出schema类型。

d、可以针对选定的对象生成(对应的)方法(名)、拼装schema(片段)、获取(所需要的)参数。

e、持久化存储。例如,可以将生成的方法(名)逐个序列化存储,每个方法(名)都会生成对应的id来存储,如果类型因为业务发生变化,不会影响到原来的方法名。

f、如果出现原有的方法名在后续修改中产生冲突,会在界面上提示,该方法名已失效(在图4中未示出),即可手动修改方法名。

3、配置和筛选类型。

例如,配置和筛选类型可以包括以下操作:

在界面(上述gui)的左侧上渲染出所获取到的序列化好的所有接口,此时就可以通过在列表中进行选择的方式来筛选开发人员需要导出的方法和修改参数和schema,从而定制要导出的接口方法(即,上述前端操作接口或源代码),在平台(即,界面)上可以直观的看到最终输出的数据(即,上述前端操作接口或源代码)。

4、数据转换。

例如,数据转换可以包括以下操作:

可以将输出的(第一格式的)查询结果数据输入自定义的格式转换函数,获取最终要在渲染层直接操作的(第二格式的)查询结果数据。

5、导出类型文件。

例如,导出类型文件可以包括以下操作:

最终选中了要导出的方法,就可以导出文件到项目目录,然后再在项目中直接使用(即,对应于上述步骤s108:在本地存储前端操作接口)。

根据本发明的上述技术方案,具有以下优点:

1、简化了开发人员的开发操作的过程,例如,通过平台(即,具有gui的交互平台)快速生成接口(即,前端操作接口),不需要开发人员手动编写代码。

2、可以将前端操作接口保存在开发人员指定类型的源文件中,供后续开发使用。

3、可以调用使用高级编程语言编写的方法,来调用前端操作接口,进行统一维护。

4、可以对前端渲染数据的数据格式和后端数据的数据格式进行转换。

5、可以通过平台化的方式,维护和管理各个开发人员需要的接口,提高和数据交互的开发效率。

6、根据本发明的上述平台(即,上述装置)可以直接集成到graphql的客户端中,作为工具的方式提供给开发人员。

7、一次设置,长期可用,方便管理graphql类型和对应的方法。

8、数据转化统一在请求后处理,减少对渲染层的污染,更加解耦。

9、后期graphql发生变更可以第一时间感知。

上面描述的内容可以单独地或者以各种方式组合起来实施,而这些变型方式都在本发明的保护范围之内。

本领域普通技术人员可以理解,上文中所公开方法中的全部或某些步骤、系统、装置中的功能模块/单元可以被实施为软件、固件、硬件及其适当的组合。在硬件实施方式中,在以上描述中提及的功能模块/单元之间的划分不一定对应于物理组件的划分;例如,一个物理组件可以具有多个功能,或者一个功能或步骤可以由若干物理组件合作执行。某些组件或所有组件可以被实施为由处理器,如数字信号处理器或微处理器执行的软件,或者被实施为硬件,或者被实施为集成电路,如专用集成电路。这样的软件可以分布在计算机可读介质上,计算机可读介质可以包括计算机存储介质(或非暂时性介质)和通信介质(或暂时性介质)。如本领域普通技术人员公知的,术语计算机存储介质包括在用于存储信息(诸如计算机可读指令、数据结构、程序模块或其他数据)的任何方法或技术中实施的易失性和非易失性、可移除和不可移除介质。计算机存储介质包括但不限于ram、rom、eeprom、闪存或其他存储器技术、cd-rom、数字多功能盘(dvd)或其他光盘存储、磁盒、磁带、磁盘存储或其他磁存储装置、或者可以用于存储期望的信息并且可以被计算机访问的任何其他的介质。此外,本领域普通技术人员公知的是,通信介质通常包含计算机可读指令、数据结构、程序模块或者诸如载波或其他传输机制之类的调制数据信号中的其他数据,并且可包括任何信息递送介质。

最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制。尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例的技术方案的精神和范围。

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