GraphQL 学习指南 (2):欢迎来到 GraphQL 的世界 1.1

阅读数:14 2019 年 12 月 15 日 19:23

GraphQL学习指南(2):欢迎来到GraphQL的世界 1.1

(GraphQL 是什么)

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

GraphQL( http://www.graphql.cn )是一种 API 查询语言,也是一种用于实现数据查询的运行时(runtime)。GraphQL 服务与传输方式没有关系,但通常基于 HTTP 协议。

为了演示 GraphQL 查询和返回的数据,我们调用星球大战数据 API( https://graphql.org/swapi-gaphql/ )。该 API 是 GraphQL 封装的表述性状态传递方式(Representational State Transfer,即 RESTful)API。我们就用它来发送查询并接收数据。

图 1-1 是 GraphQL 的查询流程示例。左侧为我们想要查询的数据。我们请求的是莱娅公主(Leia Organa)的数据,并且指定限定条件(personID:5)。接下来指定我们想要的三个数据字段:name、birthYear 和 created。右侧为我们获得的响应结果:数据以 JSON 格式返回,并且只包含我们所需要的数据。

GraphQL学习指南(2):欢迎来到GraphQL的世界 1.1

图 1-1:人物查询字段调用星球大战 API

接下来我们来调整一下查询字段,不必担心,查询是交互式的。我们改变之后立刻就能看到新的结果。如图 1-2 所示,我们添加字段了 filmConnection,并指定了次级字段,从而获得了莱娅公主登场的所有电影的名字。

在执行查询时,根据嵌套的查询字段可以遍历相关对象。这样我们就可以查询两种不同的数据类型而只发出一个 HTTP 请求。不必在多个对象之间来回查找数据,因为我们不需要的数据根本不会返回。使用 GraphQL,用户只需一次请求就能获取所需的所有数据。

每当我们向 GraphQL 服务器请求数据时,它会自动通过类型检测系统进行验证。每个 GraphQL 服务器都会在其 GraphQL Schema 中定义数据类型。可以将类型检测系统看作是 API 数据的架构,并自定义数据对象的内容。举例来说,之前我们返回的 Person 对象大体如下:

复制代码
type Person {
id: ID!
name: String
birthYear: String
eyeColor: String
gender: String
hairColor: String
height: Int
mass: Float
skinColor: String
homeworld: Planet
species: Species
filmConnection: PersonFilmsConnection
starshipConnection: PersonStarshipConnection
vehicleConnection: PersonVehiclesConnection
created: String
edited: String
}

GraphQL学习指南(2):欢迎来到GraphQL的世界 1.1

图 1-2:变更查询字段

Person 类型包括了莱娅公主可查询的所有字段及其类型。第 3 章将深入研究 GraphQL 的类型检测系统和模板。

GraphQL 通常被称为声明式数据获取语言。简而言之,开发人员可根据他们需要的数据来列出请求的数据字段,而无须关注如何获得数据。许多语言都有其对应的 GraphQL 服务端库,包括 C#、Clojure、Elixir、Erlang、Go、Groovy、Java、JavaScript、.NET、PHP、Python、Scala 和 Ruby1

1 GraphQL 服务器库参见 https://graphql.org/code/

本书将重点介绍如何使用 JavaScript 来构建 GraphQL 服务。同时书中讨论的所有 GraphQL 技术也同样适用于其他语言。

GraphQL学习指南(2):欢迎来到GraphQL的世界 1.1

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

评论

发布