《GraphQL 学习之道》The Road to GraphQL(简体中文版)
免费!
有会员资格
$9.99
建议价格

《GraphQL 学习之道》The Road to GraphQL(简体中文版)

关于本书

本书的主旨是 GraphQL 在现代应用中的使用。GraphQL 只是一种规范,虽然它可以运用在许多编程语言中,但本书将主要聚焦于 JavaScript 中的 GraphQL。GraphQL 规范的缔造者 Facebook,发布了用 JavaScript 实现 GraphQL 的样例,而用 JavaScript 的原因是:对于许多公司以及他们的客户端服务器架构来说 JavaScript 是近来最备受瞩目的编程语言和生态系统了。

GraphQL 是一种可以用在任何地方的查询语言,但它通常用于客户端与服务器应用间的通讯。它并不局限于网络层协议的使用,所以数据可以在客户端和服务器应用间读写。它用于补足 JavaScript 中各种库和框架的网络协议栈。客户端可以用像 React、Angular、 Vue 等流行的解决方案,而服务端可以在 Node.js 的环境中使用 Express、Koa、 Hapi 等中间件库。有了这些前后端框架,剩下的就只是通过网路发送带有 GraphQL 指令的 HTTP 请求去链接两端了。

GraphQL 的出现开启了 web 开发的新纪元。RESTful 应用是现在业界在客户端与服务器数据传输上最受欢迎的方式,但是现代的需求已经发生了改变。现在许多应用不得不处理多种客户端,比如桌面应用,web 应用,移动端应用,可穿戴设备应用,他们都需要服务端暴露 API。这就变成了两种选择,一种是用 REST 实现多个针对不同客户端的 API,而另一种则是用 GraphQL 实现一个对所有客户端应用都通用的 API,对于该如何选择就不言而喻了。但 GraphQL 不仅仅只是一个统一的接口,随着开源社区的发展,它的生态系统赋予了它强大的功能甚至更多的可能性。

我恰好有幸与一位 Java GraphQL 开源代码的贡献者共事过。他的努力使他成为了首批 GraphQL 开源代码的贡献者之一,并最终构建了可靠的 Java 实现。这段经历塑造了我自己对 GraphQL 的思考,而后当我的雇主为其企业级应用评估 GraphQL 时,又加深了我对它的思考。最初,我们客户端与服务器之间的粘合主要受 REST 的影响,我们拥有适用于所有 RESTful 资源的 API 端点,但最终遇到了问题,像 Facebook 这样的第三方客户端,无法消费我们的 API 。由于 API 端点过于严格,因此需要对它进行聚合和修改。 聚合意味着将更多的资源放入单个 API 端点,而修改则是为了提供 API 端点的变形,以满足对同一个请求资源的不同表示。我们引入了自己实现的方法去服务器请求资源,最终我们实现了简单的 GraphQL。在客户端方面,当时只有 Relay for React 这一个成熟的库按照消费 GraphQL API 来进行发布的,因此我们也投入了时间去研究它。最后,发现 GraphQL 尚处于发展阶段,因此我们推迟了将其引入我们的技术栈的决定。但不可否认,当时的我们都未料到它会变得如此强大且受欢迎。

因为这本书以 GraphQL 在客户端的应用为开端,所以你将使用 React 作为 UI 框架去消费 GraphQL API,被消费的是 GitHub 的 GraphQL API。它之所以能成为开发者们热衷选择的原因是:GitHub 是向公众发布 GraphQL API 的少数几家流行公司之一;GitHub 的稳定增长也为 GraphQL 本身带来了一定的可信度;还有就是第三方 API 通常会在刚开始的时候聚焦于客户端 GraphQL 应用上。此时本书讲授如何在客户端程序中去消费 GraphQL API 而无需你自己去实现一个 GraphQL 的服务器。

当本书内容转向服务器端的 GraphQL 时,我们将实现最终可由 GraphQL 客户端应用程序消费的 GraphQL API。你将实现如身份验证、数据库连接、分页这样强大的功能。最后,你应该能够牢牢掌握如何在 JavaScript 应用中使用 GraphQL 的知识。

目录

  • 简介
    • 关于作者
    • 基本要求
    • FAQ
    • 如何使用本书
    • 挑战
  • GraphQL
    • 什么是 GraphQL?
    • GraphQL 的优势
    • GraphQL 的劣势
    • 为什么不用 REST
    • GraphQL 的替代方案
  • Apollo
    • Apollo 优势
    • Apollo 劣势
    • 针对 JavaScript, React 和 Node.js 的 Apollo 替代选择
  • GraphQL 准备, 相关工具和 API
    • 利用 GitHub 数据来提供 API
    • 使用 GitHub 的 access token 来读写数据
    • 与 GitHub GraphQL API 交互
  • GraphQL 基础
    • GraphQL 基础: 查询
    • GraphQL 基础:变更
    • GraphQL 分页
  • React 和 GraphQL 的结合
    • 编写你的第一个 React GraphQL 客户端
    • 在 React 中执行 GraphQL 查询
    • React 中的 GraphQL 分页
    • React 中的 GraphQL 变更操作
    • React 中不借助 Apollo 使用 GraphQL 的缺点
  • Apollo Client
    • 从在命令行中使用 Apollo Boost 开始
    • Apollo 客户端和 GraphQL 查询
    • 带分页,变量,嵌套对象和列表字段的 Apollo Client
    • Apollo Client 和 GraphQL 变更
  • React 结合 GraphQL 与 Apollo 客户端
    • 编写你的第一个使用 GraphQL 和 Apollo 客户端的 React 应用
    • 配置使用 React 和 GitHub GraphQL API 的 Apollo 客户端
    • 绑定数据层与视图层:介绍 React Apollo
    • 在 React 中 使用 Apollo 客户端进行 GraphQL 查询
    • Apollo 客户端在 React 中的错误处理
    • 在 React 中使用 Apollo 客户端变更操作
    • 使用 React 高阶组件来完成 GraphQL 的查询/变更操作
    • Apollo 客户端在 React 中使用本地状态管理
    • React 中的 Apollo 客户端乐观 UI
    • React 中 Apollo 客户端的 GraphQL 分页
    • React 中通过 Apollo 客户端实现 GraphQL 缓存查询
    • 实现 Issues 功能:准备
    • 实现 Issue 功能: 客户端过滤
    • 实现 Issues 功能: 服务端过滤
    • React 中 Apollo 客户端预加载
    • 练习:评论功能
    • 附录: CSS 文件与样式
  • 在 GraphQL 和 Apollo 服务端中使用 Node.js
    • 使用 Express 设置 Apollo 服务端
    • Apollo 服务端: 类型定义
    • Apollo 服务端: 解析器
    • Apollo 服务端: 关系类型
    • Apollo 服务端: 查询与变更
    • Apollo 服务端中的 GraphQL 模式拼接
    • PostgreSQL 与 Sequelize 的 GraphQL 服务器
    • 连接解析器和数据库
    • Apollo 服务端:校验和错误处理
    • Apollo 服务端: 认证
    • 使用 GraphQL 和 Apollo 服务端进行授权
    • Apollo 服务端中的 GraphQL 自定义标量
    • Apollo 服务端中 GrapgQL 的分页
    • GraphQL 订阅
    • 测试 GraphQL 服务器
    • 在 GraphQL 中使用批处理和缓存
    • GraphQL 服务器 + PostgreSQL 部署到 Heroku
  • 最后的一些想法
    • 下一步学习路径
    • 永远不要停止学习
    • 感谢

Leanpub 无条件、零风险的100%满意保证

支付后的60天内,只需简单点击两下,您便可以退书并且取回先前支付的全部金额。退款是手动处理的,因此可能需要几天时间来完成整个流程。
查看完整条款

在$10的购买中赚$8,在$20的购买中赚$16

我们在$7.99或以上的购买中支付80%的版税,并在$0.99至$7.98的购买中支付80%的版税减去50美分的固定费用在$10的销售中赚$8,在$20的销售中赚$16。因此,如果我们以$20销售5000本未退款的书,您将赚取$80,000

(是的,一些作者已经在Leanpub上赚了很多钱。)

实际上,作者在Leanpub上赚取了超过1300万美元通过写作、出版和销售。

了解更多关于Leanpub写作的信息

免费更新。无DRM。

如果你购买了Leanpub的书,只要作者更新这本书,你就可以免费获得更新!许多作者使用Leanpub在他们编写书籍的过程中发布他们的作品。所有读者都可以获得免费更新,无论他们何时购买的书或他们支付了多少钱(包括免费)。

大多数Leanpub书籍都提供PDF(适用于计算机)、EPUB(适用于手机和平板电脑)和MOBI(适用于Kindle)格式。书籍包含的格式会显示在此页面的右上角。

最后,Leanpub的书籍没有任何DRM版权保护的限制,所以你可以轻松地在任何支持的设备上阅读它们。

了解更多关于Leanpub的电子书格式以及在哪里阅读它们

在 Leanpub 上写作和出版

作者与出版社使用 Leanpub 来出版正在写作中和已完成的书籍,就像这本书一样。你也可以使用 Leanpub 来撰写、出版和销售你的作品!Leanpub 是功能强大的平台,非常适合认真的作者。它结合了简单、优雅的写作与出版流程,以及一个可销售正在写作中的电子书的线上商店。Leanpub 是作家的神奇之笔:只需编写纯文本,然后点击按钮即可出版你的电子书。真的就是这么简单。

学习更多关于在 Leanpub 上写作的信息