GraphQL 学习指南 (22):GraphQL 查询语言 3.2.1

阅读数:5 2019 年 12 月 18 日 20:44

GraphQL学习指南(22):GraphQL查询语言 3.2.1

(边和连接)

内容简介
为什么 GraphQL 是 Ajax 诞生以来具创新性的数据获取技术?GraphQL 通过为 API 提供查询语言和用以完成查询的运行状态,提供了对 REST 和特定页面服务架构的替代方案。借助这《GraphQL 学习指南》,Alex Banks 和 Eve Porcello 为希望开始使用 GraphQL 的前端 Web 开发人员、后端工程师以及项目或产品经理提供了一条清晰的学习路径。你将先后探索图论、图数据结构和 GraphQL 类型,之后在实际项目中学习如何为照片共享应用构建 schema。
《GraphQL 学习指南》还将向你介绍 Apollo Client,可用来将 GraphQL 连接到你的用户界面。

在 GraphQL 查询语言中,字段可以是标量类型或对象类型。标量类型与其他语言中的基本类型类似,是选择集的“叶子”,开箱即用,GraphQL 带有 5 种内置的标量类型:整数(Int)、浮点数(Float)、字符串(String)、布尔值(Boolean)和唯一标识符(ID)。整数和浮点数都返回 JSON 数字,字符串和 ID 都返回 JSON 字符串。布尔值类型只返回布尔值。尽管 ID 和 String 将返回相同类型的 JSON 数据,但是 GraphQL 仍然确保 ID 返回唯一的字符串。

GraphQL 对象类型是 schema 中定义的一个或多个字段的组,定义了应当返回的 JSON 对象的形式。JSON 可以在字段下无限嵌套对象,GraphQL 也可以。可以通过查询一个对象和相关对象的详细信息将对象连接在一起。

例如,假设我们想要一份雪道列表,以便乘坐指定的缆车:

复制代码
query trailsAccessedByJazzCat {
Lift(id:"jazz-cat") {
capacity
trailAccess {
name
difficulty
}
}
}

在前面的查询中,需要一些关于“Jazz-Cat”缆车的数据。我们的选择集包括了对 capacity 字段的请求。capacity 是标量类型,它返回一个整数,该整数表示一次可以乘坐的人数。trailAccess 字段的类型是 Trail(对象类型)。在这个例子中,trailAccess 返回的是一份经过筛选的缆车列表,可通过 jazz-cat 进行访问。由于 trailAccess 是 Lift 类型中的一个字段,因此 API 可以使用父对象 jazz-cat Lift 的详细信息对缆车列表进行筛选。

这个操作查询了两种类型数据(lifts 和 trails)之间的一对多连接。一台缆车和许多雪道相关联。如果从 Lift 节点开始遍历图形,便可访问到一个或多个 Trail 节点,这些节点通过一条名为 trailAccess 的边连接到 Lift 节点。如果有人觉得这里的图是无向图,那么我们就从 Trail 节点遍历到 Lift 节点,如下所示:

复制代码
query liftToAccessTrail {
Trail(id:"dance-fight") {
groomed
accessedByLifts {
name
capacity
}
}
}

在 liftToAccessTrail 查询中,我们选择了一条名为 dance-fight 的雪道(Trail)。groomed 字段返回了一个布尔值标量类型,我们可以据此判断缆车是否正在维护。而 accessedByLifts 字段返回了正在将滑雪爱好者送往 dance-fight 雪道的缆车。

GraphQL学习指南(22):GraphQL查询语言 3.2.1

购书地址 https://item.jd.com/12639300.html?dist=jd

评论

发布