目 录
第Ⅰ部分 Web服务器及Web服务
第1章 为什么Rust可用于Web应用程序 3
1.1 现代Web应用程序简介 4
1.2 为Web应用程序选择Rust 6
1.2.1 Web应用程序的特点 6
1.2.2 Rust对Web应用程序的好处 7
1.2.3 Rust的欠缺之处 11
1.3 可视化示例应用程序 11
1.3.1 构建目标 12
1.3.2 示例应用程序的技术准则 13
1.4 本章小结 14
第2章 从头开始编写一个基本的Web服务器 15
2.1 网络模型 16
2.2 用Rust编写TCP服务器 17
2.2.1 设计TCP/IP通信流程 17
2.2.2 编写TCP服务器和客户端 18
2.3 用Rust编写HTTP服务器 22
2.3.1 解析HTTP请求消息 24
2.3.2 构造HTTP响应消息 31
2.3.3 编写main()函数和server模块 38
2.3.4 编写router和handler模块 39
2.3.5 测试Web服务器 44
2.4 本章小结 46
第3章 构建RESTful Web服务 47
3.1 Actix入门 47
3.1.1 编写第一个REST API 48
3.1.2 了解Actix概念 50
3.2 使用REST构建Web API 52
3.2.1 定义项目范围和结构 53
3.2.2 定义和管理应用程序状态 56
3.2.3 定义数据模型 59
3.2.4 发布课程 63
3.2.5 获取导师的所有课程 66
3.2.6 获取单个课程的详细信息 68
3.3 本章小结 70
第4章 执行数据库操作 73
4.1 设置项目结构 73
4.2 编写与数据库的第一个异步连接(迭代1) 75
4.2.1 选择数据库和连接库 75
4.2.2 设置数据库并与异步池连接 76
4.3 设置Web服务并编写单元测试(迭代2) 81
4.3.1 设置依赖和路由 81
4.3.2 设置应用程序状态和数据模型 82
4.3.3 使用依赖注入设置连接池 83
4.3.4 编写单元测试 85
4.4 从数据库创建和查询记录(迭代3) 87
4.4.1 编写数据库访问函数 87
4.4.2 编写处理器函数 90
4.4.3 为数据库支持的Web服务编写main()函数 92
4.5 本章小结 95
第5章 处理错误 97
5.1 设置项目结构 98
5.2 Rust和Actix Web中的基本错误处理 101
5.3 定义自定义错误处理程序 106
5.4 检索所有课程的错误处理 109
5.5 检索课程详情的错误处理 114
5.6 发布新课程时的错误处理 116
5.7 本章小结 117
第6章 增强API无畏重构 119
6.1 改造项目结构 119
6.2 强化课程创建和管理的数据模型 124
6.2.1 更改数据模型 125
6.2.2 更改课程API 129
6.3 启用导师注册和管理 141
6.3.1 导师的数据模型和路由 142
6.3.2 导师路由的处理器函数 143
6.3.3 导师路由的数据库访问功能 145
6.3.4 导师的数据库脚本 147
6.3.5 运行并测试导师API 148
6.4 本章小结 151
第Ⅱ部分 服务器端Web应用程序
第7章 介绍Rust中的服务器端Web应用程序 155
7.1 介绍服务器端渲染 156
7.2 使用Actix提供静态网页 157
7.3 使用Actix和Tera渲染动态网页 159
7.4 使用表单添加用户输入 162
7.5 显示带有模板的列表 164
7.6 编写和运行客户端测试 168
7.7 连接到后端Web服务 170
7.8 本章小结 173
第8章 使用导师注册模板 175
8.1 编写初始Web应用程序 176
8.2 显示注册表单 181
8.3 注册提交处理 186
8.4 本章小结 191
第9章 使用表单进行课程维护 193
9.1 设计用户验证 193
9.2 设置项目结构 195
9.3 实现用户验证 196
9.4 路由HTTP请求 200
9.5 使用HTTP POST方法创建资源 203
9.6 使用HTTP PUT方法更新资源 206
9.7 使用HTTP DELETE方法删除资源 208
9.8 本章小结 209
第Ⅲ部分 高级主题:异步Rust
第10章 了解异步Rust 213
10.1 异步编程概念 213
10.2 编写并发程序 219
10.3 深入研究异步Rust 223
10.4 了解future 227
10.5 实现自定义future 233
10.6 本章小结 236
第11章 使用异步Rust构建P2P节点 239
11.1 介绍点对点网络 239
11.1.1 传输 241
11.1.2 对等身份 241
11.1.3 安全性 241
11.1.4 对等路由 241
11.1.5 消息传递 242
11.1.6 流复用 242
11.2 了解libp2p网络的核心架构 242
11.2.1 对等ID和密钥对 243
11.2.2 多地址 245
11.2.3 Swarm和网络行为 245
11.3 在对等节点之间交换ping命令 247
11.4 发现对等节点 249
11.5 本章小结 251
第12章 使用Docker部署Web服务 253
12.1 介绍服务器和应用程序的生产部署 254
12.1.1 软件部署周期 254
12.1.2 Docker容器的基础知识 255
12.2 编写Docker容器 257
12.2.1 检查Docker安装情况 257
12.2.2 编写一个简单的Docker容器 258
12.2.3 多阶段Docker构建 261
12.3 构建数据库容器 263
12.3.1 打包Postgres数据库 264
12.3.2 创建数据库表 268
12.4 使用Docker打包Web服务 270
12.5 使用Docker Compose编排Docker容器 271
12.6 本章小结 276