图书介绍

GraphQL实战 写给全栈工程师们PDF|Epub|txt|kindle电子书版本网盘下载

GraphQL实战 写给全栈工程师们
  • (中国)王北南 著
  • 出版社: 北京:机械工业出版社
  • ISBN:9787111630937
  • 出版时间:2019
  • 标注页数:184页
  • 文件大小:30MB
  • 文件页数:197页
  • 主题词:检索语言-程序设计

PDF下载


点此进入-本书在线PDF格式电子书下载【推荐-云解压-方便快捷】直接下载PDF格式图书。移动端-PC端通用
种子下载[BT下载速度快]温馨提示:(请使用BT下载软件FDM进行下载)软件下载地址页直链下载[便捷但速度慢]  [在线试读本书]   [在线获取解压码]

下载说明

GraphQL实战 写给全栈工程师们PDF格式电子书版下载

下载的文件为RAR压缩包。需要使用解压软件进行解压得到PDF格式图书。

建议使用BT下载工具Free Download Manager进行下载,简称FDM(免费,没有广告,支持多平台)。本站资源全部打包为BT种子。所以需要使用专业的BT下载软件进行下载。如BitComet qBittorrent uTorrent等BT下载工具。迅雷目前由于本站不是热门资源。不推荐使用!后期资源热门了。安装了迅雷也可以迅雷进行下载!

(文件页数 要大于 标注页数,上中下等多册电子书除外)

注意:本站所有压缩包均有解压码: 点击下载压缩包解压工具

图书目录

第1章 GraphQL API设计和全栈开发1

1.1 什么是GraphQL2

1.2 分布式系统2

1.2.1 扩展性3

1.2.2 可靠性3

1.2.3 远程资源共享4

1.2.4 更强的处理能力4

1.3 C/S架构与API4

1.3.1 C/S架构5

1.3.2 前端与后端5

1.3.3 全栈程序员5

1.3.4 应用程序接口6

1.4 RESTful API的起源与特点7

1.4.1 仓库保管员的窘境7

1.4.2 REST无状态的好处8

1.4.3 RESTful API是否真的无状态8

1.4.4 RESTful API是否是数据传输协议9

1.4.5 RESTful API的好处是什么9

1.5 RESTful API的主要问题10

1.5.1 数据定制的问题10

1.5.2 多次请求的问题10

1.5.3 异常处理的问题10

1.5.4 返回数据格式未知的问题11

1.5.5 请求Endpoint和方式过多的问题11

1.6 GraphQL如何解决RESTful API的问题11

1.6.1 GraphQL可以自由定制数据11

1.6.2 GraphQL可以把多次请求合并为一个12

1.6.3 GraphQL错误以及异常信息明确12

1.6.4 GraphQL返回数据的形式和查询请求同构13

1.6.5 GraphQL使用单一的Endpoint14

1.6.6 GraphQL替代了什么14

1.7 GraphQL引发的疑虑15

1.7.1 GraphQL是否还是RESTful15

1.7.2 GraphQL增大了后端系统设计的难度15

1.7.3 GraphQL是否会带来后端性能问题15

1.7.4 迁移到GraphQL的代价16

1.7.5 GraphQL是该前端驱动还是后端驱动16

1.8 GraphQL全栈框架的选用16

1.8.1 Relay17

1.8.2 Apollo17

第2章 GraphQL初体验——电商API设计18

2.1 基本开发环境的搭建19

2.2 和GraphQL互动20

2.2.1 实时交互界面GraphiQL的使用20

2.2.2 通过curl发送请求21

2.2.3 使用第三方客户端21

2.3 Schema与定义数据类型22

2.3.1 强类型的查询语言22

2.3.2 服务器端的Schema23

2.3.3 标量类型24

2.3.4 自定义复杂类型25

2.3.5 枚举26

2.3.6 列表以及对象的列表27

2.4 定义操作28

2.4.1 只读查询操作28

2.4.2 可写修改操作30

2.4.3 订阅操作31

2.4.4 传递输入类型31

2.4.5 操作也是字段33

2.5 精炼数据模型与操作33

2.5.1 接口和继承33

2.5.2 联合35

2.6 精炼查询36

2.6.1 使用变量36

2.6.2 使用别名37

2.6.3 使用片段38

2.6.4 类型条件39

2.6.5 使用Directive40

2.6.6 后端工程师的福音41

2.7 简单数据验证41

2.7.1 必填值的验证42

2.7.2 标量值的验证42

第3章 电商网站前端开发44

3.1 GraphQL前端开发要点45

3.1.1 前端开发的主要任务45

3.1.2 前端开发的难点46

3.1.3 前端技术的选型46

3.2 前端React项目初始化47

3.2.1 React特点简介47

3.2.2 React整合GraphQL前端系统设计48

3.2.3 创建React前端工程49

3.2.4 安装Apollo客户端49

3.2.5 初始化GraphQL客户端50

3.2.6 手动发送查询51

3.3 只读数据的React UI组件51

3.3.1 构建GraphQL Query查询51

3.3.2 定义列表元素组件52

3.3.3 定义列表组件52

3.3.4 绑定静态查询和UI组件53

3.3.5 使用Query组件54

3.3.6 从Query组件中接收一个参数55

3.3.7 数据的接收以及出错处理56

3.3.8 手动刷新57

3.4 修改数据的React UI组件57

3.4.1 定义一个带有变量的Mutation操作58

3.4.2 使用Mutation UI组件58

3.5 支持订阅59

3.5.1 什么时候使用订阅59

3.5.2 订阅是如何实现的60

3.6 本地数据60

第4章 基于Node.js的GraphQL后端61

4.1 GraphQL后端架构思想62

4.1.1 “薄”层设计62

4.1.2 “门户”设计64

4.1.3 面向业务设计64

4.2 GraphQL层的职责与实现65

4.2.1 GraphQL层的职责65

4.2.2 GraphQL层的实现65

4.2.3 Resolver函数与分治策略67

4.3 Apollo GraphQL后端框架68

4.3.1 依赖库的安装68

4.3.2 定义和解析Schema69

4.3.3 绑定处理查询操作函数69

4.4 详解Resolver函数72

4.4.1 Resolver的各种返回类型72

4.4.2 Resolve一个类型72

4.4.3 Resolve一个复杂类型字段73

4.4.4 Resolve一个标量字段75

4.4.5 Resolve一个自定义标量字段77

4.4.6 Resolve一个列表80

4.5 GraphQL后端验证以及错误处理81

4.5.1 简单方式81

4.5.2 使用自定义标量类型进行验证82

4.6 异步IO84

4.6.1 基于异步非阻塞IO的JavaScript实现84

4.6.2 同步还是异步85

4.6.3 异步Resolver85

4.7 使用JavaScript开发后端服务的问题86

第5章 基于Go语言协程的GraphQL服务88

5.1 使用协程和上下文89

5.1.1 使用协程的原因89

5.1.2 协程和GraphQL服务90

5.1.3 上下文和作用域90

5.1.4 派生上下文91

5.2 Go语言的Web服务和中间件92

5.2.1 构建Web服务92

5.2.2 Web服务中间件93

5.2.3 基于中间件的后端架构94

5.2.4 数据收集中间件95

5.2.5 数据库会话中间件95

5.3 GraphQL Http请求的处理97

5.3.1 GraphQL请求的解析97

5.3.2 执行GraphQL查询和准备结果98

5.3.3 合理使用Http请求上下文100

5.5 使用Go语言的GraphQL后端是否会有性能问题100

第6章 实体数据持久化建模与实现102

6.1 基于ID的数据库访问层设计103

6.1.1 系统和API设计103

6.1.2 实现数据读取104

6.1.3 实现数据写入105

6.2 使用ID访问数据的好处105

6.2.1 利于数据库查询性能优化105

6.2.2 利于分片106

6.2.3 利于和缓存结合106

6.2.4 防止重复读取同一资源106

6.2.5 利于Resolver函数实现106

6.3 建立基于ID的抽象Schema数据类型107

6.3.1 Relay的Schema设计方案107

6.3.2 Relay的GraphQL查询设计107

6.4 分布式ID生成算法108

6.4.1 Snowflake ID108

6.4.2 Fast ID的安装和代码示例108

6.4.3 推荐设置109

6.5 GraphQL连接数据库访问层109

6.5.1 用户数据PAO实例110

6.5.2 PAO在GraphQL后端架构中存在的意义111

6.6 简单分页设计111

6.6.1 简单分页设计112

6.6.2 Cursor分页方式113

6.6.3 客户端分页显示114

6.6.4 服务器端Resolve分页114

6.7 一对多关系115

6.7.1 Schema和Resolver函数定义116

6.7.2 外键方式116

6.7.3 聚合方式117

第7章 “关系”的设计和持久化118

7.1 用户关系建模119

7.1.1 如何表达“图”119

7.1.2 基本设计思路120

7.2 边的集合与游标分页120

7.2.1 边的简单表达120

7.2.2 边的简单分页121

7.2.3 边的游标分页122

7.3 借鉴Relay的边设计方案123

7.4 “关系”数据的数据访问层设计124

第8章 全栈API优化125

8.1 前后端数据的一致性126

8.1.1 数据的存在形式126

8.1.2 Query与Mutation126

8.2 客户端缓存更新机制128

8.2.1 客户端使用Mutation更新缓存128

8.2.2 定制更新缓存129

8.3 出错、超时与重试130

8.3.1 错误信息的定义130

8.3.2 服务器端如何返回出错信息131

8.3.3 客户端如何处理出错132

8.4 使用高阶函数来优化GraphQL组件132

8.4.1 高阶函数133

8.4.2 使用函数式的声明方式133

8.4.3 使用Recompose134

8.5 通盘考虑API设计135

8.5.1 面向真实数据关系建模135

8.5.2 遗留数据建模136

8.6 自省和文档136

8.6.1 命名比文档重要136

8.6.2 自省137

8.6.3 文档139

8.6.4 API的升级与兼容性140

第9章 认证与授权141

9.1 基于Http协议的用户认证142

9.1.1 使用Cookie的认证方式142

9.1.2 使用访问令牌Token的认证方式142

9.2 基于访问令牌Token的用户认证143

9.2.1 访问令牌的生成143

9.2.2 GraphQL整合Token要点144

9.2.3 服务器端拿到Token以后做什么144

9.3 查询操作层面的权限控制145

9.3.1 设计GraphQL的授权服务146

9.3.2 JWT Token中数据的定义146

9.3.3 JWT Token的生成147

9.3.4 验证Token中间件148

9.3.5 解析和验证Token148

9.3.6 通过上下文传递授权信息149

9.3.7 数据细粒度的权限控制150

第10章 高并发后端优化151

10.1 处理N+1问题152

10.1.1 什么是N+1问题152

10.1.2 N+1问题为什么会危害性能152

10.1.3 解决N+1问题的思路153

10.1.4 GraphQL如何批处理查询153

10.2 使用DataLoader154

10.2.1 DataLoader的工作模式154

10.2.2 批处理函数156

10.2.3 DataLoader与下游服务157

10.2.4 批处理函数对于error的处理157

10.2.5 为每个Http请求创建DataLoader157

10.3 使用Cache159

10.3.1 GraphQL与RESTful API对缓存的不同设计159

10.3.2 Memcached的查询与优化160

10.3.3 Redis的查询与优化161

10.4 NoSQL与下游服务的数据库查询与优化161

10.4.1 使用内嵌对象存储数据161

10.4.2 使用对象引用存储数据162

10.4.3 基于列Column存储的数据建模162

10.4.4 下游服务数据源的优化163

10.5 SQL数据库的数据查询合并与优化163

10.5.1 基于Key-Value设计的SQL数据库优化163

10.5.2 基于传统数据库查询的数据库优化164

10.5.3 高并发下的SQL数据查询瓶颈164

10.6 GraphQL与大数据和机器学习166

10.6.1 使用GraphQL获取实时数据166

10.6.2 获取大批次对象团的问题167

10.6.3 高频访问GraphQL服务的问题167

10.6.4 GraphQL应用的数据采集168

第11章 测试与部署170

11.1 单元测试171

11.1.1 在Resolver函数中使用依赖注入171

11.1.2 创建Mock对象172

11.1.3 编写单元测试代码173

11.2 集成测试174

11.2.1 准备环境174

11.2.2 准备客户端174

11.2.3 编写测试用例并验证结果175

11.2.4 持续集成175

11.3 压力测试与Profiling176

11.3.1 简单压力测试177

11.3.2 Fork生产环境流量177

11.3.3 使用访问日志进行压力测试178

11.3.4 Diffy测试178

11.4 开发环境部署179

11.4.1 配置下游服务179

11.4.2 负载均衡的部署180

11.5 生产环境弹性部署181

11.5.1 服务注册与发现182

11.5.2 高可用性系统183

后记184

热门推荐