GraphQL速学(译)

目录#

简介#

本文译自 🔥 GraphQL Crash Course (in 10 pics!)

👇 以下是GraphQL的十张图十分钟速成! 🥳

1 - GraphQL是如何生效的#

GraphQL 是一种用于发起高弹性API请求的查询语言;

我们使用嵌套字段描述我们在单个请求中想要的内容,然后我们将准确地接收到符合我们预期的数据。

这也代表着,我们不需要通过多个小的请求来将数据缝在一起,并避免了在请求中获得多余的部分;

GraphQL是如何生效的

2 - GraphQL的数据请求与交换流程#

GraphQL是一种语言标准而不是一个library;

我们以POST或GET请求的形式发送结构化查询,服务器检查它们在预定义的Schema中是否有效,然后运行相应的解析函数来执行操作,最后将数据返回给客户端。

GraphQL的数据请求与交换流程

3 - GraphQL Schema#

GraphQL Schema定义了有效查询的结构和查询的返回数据类型,它是客户端和服务器用来通信的协议。

它们是强类型的,可以嵌套;除了最常见的 “对象” 类型之外,该模式还支持union、enum、interfaces等。

There are 3 operation types in GraphQL - query, mutation, or subscription. query is the most commonly used operation.
GraphQL中有3种操作类型 — querymutationsubscriptionquery是最常用的操作。

GraphQL Schema

4 - 参数#

GraphQL查询允许我们传入参数以获得过滤后的结果,所有有效的参数的定义都在 Schema 中。

在后端,我们需要定义相应的解析器来满足这些条件查询。

注意: GraphQL在SQL中没有内置比较运算符,类似 > 或TOP, LIMIT这样的函数!这些附加功能必须在解析器中实现。不过不用担心,大多数GraphQL框架已经附带了这些工具类解析器。

参数

5 - Alias 别名#

有时在查询中,我们会多次选择相同的字段,但每次都使用不同的参数(如图片中的参数)。这将导致命名冲突,因此我们需要为字段分配别名。

别名可以添加到任何字段。

Alias

6 - Fragment 帧#

我们可以将 “子字段” 封装到帧中,并在帧中使用spread操作符来复用它们。当我们一次又一次地选择相同的字段时,它非常有用,可以将它看作是GraphQL字段名的JS对象,可以对其进行解构;

帧与HTTP请求时携带的查询字段中的主要操作一起发送到服务器。

Fragment

7 - Variable 变量#

使用GraphQL变量可以方便地模块化和共享/复用预先编写的查询代码;我们在查询开始时声明它们,它们还可以分配默认值;变量可以嵌套,就和普通的JSON对象一样。

注意到第2部分的图片中的GraphQL请求有效载荷了吗?这就是变量字段的作用。

Variable

8 - Interface 接口#

GraphQL Scheme中的Interface允许我们以OOP的方式灵活地创建和使用复杂的数据类型。

类型可以实现一个或多个接口。

当返回类型是接口时,我们可以使用关键字 on 有条件地访问特定实现的字段。

Interface

9 - Mutation 数据变动#

与查询相反,Mutation 是用来更改服务器上的数据用的。例如创建帐户、生成验证令牌或添加数据项。

和查询一样,我们可以为一个 Mutation 提供参数。该Mutation操作会返回变动后的值,所以不要忘记填写我们需要的字段;

Mutation

10 - Subscription 订阅#

与通过HTTP发送和接收查询不同,GraphQL还有一个用于创建WebSocket连接的 Subscription 操作类型,因此服务器可以将更新主动地推送到客户端。

特别适用于💹股票市场应用或💬即时通讯应用程序。

Subscription

完。