- ISBN:9787302658238
- 装帧:平装-胶订
- 册数:暂无
- 重量:暂无
- 开本:其他
- 页数:344
- 出版时间:2024-04-01
- 条形码:9787302658238 ; 978-7-302-65823-8
本书特色
如果你厌倦了缓慢、占用大量资源且不稳定的模板化Web开发工具,Rust就是你的解决方案。Rust服务提供了稳定的安全保证、非凡的开发经验,以及能够自动防止常见错误的编译器。
《Rust Web开发》教你使用Rust以及重要的Rust库(如异步运行时的Tokio、用于Web服务器和API的Warp,以及运行外部HTTP请求的Reqwest)来创建服务端的Web应用。《Rust Web开发》包含大量的代码示例以及专业的提示,以帮助你创建项目和组织代码。随着学习的深入,你将创建一个完整的Q&A Web服务并逐章迭代你的代码,就像参与了真实的项目开发一样。
内容简介
主要内容 ● 在异步环境中处理借用检查器 ● 创建Web API并处理JSON ● 组建一个用于Rust异步开发的技术栈 ● 优雅地处理错误 ● 测试、追踪、记录和调试 ● 在多个环境中部署Rust应用
目录
第1章 为什么使用Rust 3
1.1 开箱即用:Rust提供的工具 4
1.2 Rust编译器 8
1.3 Rust用于Web服务 10
1.4 Rust应用程序的可维护性 15
1.5 本章小结 15
第2章 建立基础 17
2.1 遵循Rust规范 18
2.1.1 使用结构体对资源进行建模 19
2.1.2 理解Option 21
2.1.3 使用文档解决错误 22
2.1.4 在Rust中处理字符串 27
2.1.5 深入理解移动、借用和所有权 28
2.1.6 使用和实现trait 31
2.1.7 处理结果 39
2.2 创建Web服务器 40
2.2.1 同时处理多个请求 41
2.2.2 Rust的异步环境 42
2.2.3 Rust处理async/await 43
2.2.4 使用Rust Future类型 44
2.2.5 选择运行时 45
2.2.6 选择Web框架 46
2.3 本章小结 49
第Ⅱ部分 开始
第3章 创建**个路由函数 53
3.1 认识Web框架:Warp 54
3.1.1 Warp包括哪些内容 54
3.1.2 Warp的过滤器系统 55
3.2 获取**个JSON响应 56
3.2.1 与你的框架理念保持一致 57
3.2.2 处理正确的路由 58
3.2.3 使用Serde库 59
3.2.4 优雅地处理错误 61
3.3 处理CORS头信息 65
3.3.1 在应用层面返回CORS头信息 66
3.3.2 测试CORS响应 67
3.4 本章小结 70
第4章 实现具象状态传输API 73
4.1 从内存中获取问题 74
4.1.1 设置一个模拟数据库 75
4.1.2 准备一组测试数据 78
4.1.3 从模拟数据库中读取 80
4.1.4 解析查询参数 84
4.1.5 返回自定义错误 88
4.2 创建、更新和删除问题 92
4.2.1 在线程安全的情况下更新数据 92
4.2.2 添加一个问题 96
4.2.3 更新问题 98
4.2.4 处理错误的请求 100
4.2.5 从存储中删除问题 101
4.3 通过url表单创建问题 103
4.3.1 url表单和JSON的区别 104
4.3.2 通过url表单添加答案 104
4.4 本章小结 107
第5章 清理代码库 109
5.1 将代码模块化 109
5.1.1 使用Rust的内置模块系统 110
5.1.2 针对不同用例的文件夹结构 116
5.1.3 创建库和sub-crate 120
5.2 为代码创建文件 124
5.2.1 使用文档注释和私有注释 124
5.2.2 在注释中添加代码 126
5.3 检测和格式化代码库 128
5.3.1 安装和使用Clippy 128
5.3.2 使用Rustfmt格式化代码 131
5.4 本章小结 132
第6章 记录、追踪和调试 133
6.1 在Rust应用中记录日志 134
6.1.1 在Web服务中实现日志记录 136
6.1.2 记录HTTP请求日志 142
6.1.3 创建结构化的日志 145
6.2 异步应用中的追踪 152
6.2.1 引入Tracing crate 153
6.2.2 集成Tracing到应用 154
6.3 调试Rust应用 158
6.3.1 在命令行上使用GDB 159
6.3.2 使用LLDB调试Web服务 160
6.3.3 使用Visual Studio和LLDB 162
6.4 本章小结 165
第7章 为应用添加数据库 167
7.1 设置示例数据库 168
7.2 创建**个表 168
7.3 使用数据库crate 171
7.3.1 将SQLx添加到项目中 173
7.3.2 将Store连接到数据库 174
7.4 重新实现路由函数 177
7.4.1 在get_questions中添加数据库 178
7.4.2 重新实现add_question路由函数 185
7.4.3 问题处理函数的更新和删除 187
7.4.4 更新add_answer路由 190
7.5 处理错误和追踪数据库交互 192
7.6 集成SQL迁移 198
7.7 案例研究:切换数据库管理系统 201
7.8 本章小结 204
第8章 集成第三方API 205
8.1 准备代码库 207
8.1.1 选择一个API 208
8.1.2 了解HTTP库 209
8.1.3 添加一个使用Reqwest的HTTP调用示例 211
8.1.4 处理外部API请求的错误 213
8.2 将JSON响应反序列化为结构体 219
8.2.1 收集API响应信息 220
8.2.2 为API响应创建类型 221
8.3 向API发送问题和答案 226
8.3.1 重构add_question路由函数 226
8.3.2 进行敏感词检查以更新问题 229
8.3.3 更新add_answer路由函数 230
8.4 处理超时和同时发生的多个请求 231
8.4.1 实现外部HTTP调用的重试机制 232
8.4.2 并发或并行执行future 236
8.5 本章小结 238 第Ⅲ部分 投入生产
第9章 添加认证和授权 241
9.1 为Web服务添加认证 243
9.1.1 创建用户概念 243
9.1.2 迁移数据库 245
9.1.3 添加注册端点 247
9.1.4 对密码进行哈希处理 250
9.1.5 处理重复账户错误 252
9.1.6 有状态认证与无状态认证 258
9.1.7 添加登录端点 259
9.1.8 为令牌添加有效期 263
9.2 添加授权中间件 265
9.2.1 迁移数据库表 265
9.2.2 创建令牌验证中间件 266
9.2.3 扩展现有路由以处理账户ID 270
9.3 未涵盖的内容 275
9.4 本章小结 276
第10章 部署应用程序 277
10.1 通过环境变量设置应用程序 277
10.1.1 设置配置文件 279
10.1.2 在程序中接收命令行参数 281
10.1.3 在Web服务中读取和解析环境变量 283
10.2 根据不同环境编译Web服务 288
10.2.1 构建二进制文件时的development和release标志 289
10.2.2 针对不同环境交叉编译二进制文件 290
10.3 在构建流程中使用build.rs 291
10.4 创建正确的Web服务Docker镜像 294
10.4.1 创建静态链接的Docker镜像 295
10.4.2 使用docker-compose建立本地Docker环境 296
10.4.3 将Web服务器的配置提取到一个新模块中 299
10.5 本章小结 303
第11章 测试Rust应用程序 305
11.1 业务逻辑的单元测试 306
11.1.1 测试分页逻辑和处理自定义错误 307
11.1.2 使用环境变量测试配置模块 310
11.1.3 使用新创建的模拟服务器测试profanity模块 314
11.2 测试Warp过滤器 321
11.3 创建集成测试配置 325
11.3.1 将代码库拆分为lib.rs和二进制文件 327
11.3.2 创建集成测试crate和单发服务器实现 330
11.3.3 添加注册测试 332
11.3.4 发生错误时进行堆栈展开 336
11.3.5 测试登录和发布问题 337
11.4 本章小结 339
附录 关于安全的思考 341
作者简介
巴斯蒂安·格鲁伯(Bastian Gruber)是Centrifuge的协议工程师。他曾经是Rust官方异步工作组的一员,并创建了Rust and Tell Berlin MeetUp小组。
-
深度学习的数学
¥43.5¥69.0 -
全图解零基础word excel ppt 应用教程
¥12.0¥48.0 -
机器学习
¥59.4¥108.0 -
有限与无限的游戏:一个哲学家眼中的竞技世界
¥37.4¥68.0 -
智能硬件项目教程:基于ARDUINO(第2版)
¥31.9¥65.0 -
硅谷之火-人与计算机的未来
¥14.3¥39.8 -
元启发式算法与背包问题研究
¥38.2¥49.0 -
AI虚拟数字人:商业模式+形象创建+视频直播+案例应用
¥62.9¥89.8 -
UNIX环境高级编程(第3版)
¥164.9¥229.0 -
剪映AI
¥52.8¥88.0 -
深度学习高手笔记 卷2:经典应用
¥90.9¥129.8 -
纹样之美:中国传统经典纹样速查手册
¥76.3¥109.0 -
UG NX 12.0数控编程
¥22.1¥45.0 -
MATLAB计算机视觉与深度学习实战(第2版)
¥90.9¥128.0 -
界面交互设计理论研究
¥30.8¥56.0 -
微机组装与系统维护技术教程(第二版)
¥37.8¥43.0 -
明解C语言:实践篇
¥62.9¥89.8 -
Linux服务器架设实战(Linux典藏大系)
¥83.3¥119.0 -
Visual Basic 语言程序设计基础(第6版)
¥32.0¥45.0 -
贝叶斯推理与机器学习
¥139.3¥199.0