关 于 本 书
本书将帮助你从头到尾编写Web应用程序(无论是API、微服务还是单体应用)。你将学习到一切必要的知识,包括如何向外界开放API,连接数据库以存储数据,以及测试和部署应用程序。
这不是一本参考书,而是一本工作手册。正在构建的应用程序在设计上做出了一些妥协,以便在适当的时候解释概念。需要阅读整本书的内容才能最终将应用程序部署到生产环境中。
哪些人应该阅读本书
本书适合那些已经阅读过Steve Klabnik和Carol Nichols合著的The Rust Programming Language(No Starch Press,2019)前6章,并想知道“可以用它做什么”的读者。它也适合那些之前用其他语言构建过Web应用程序的开发人员,他们想知道Rust是否适用于他们的下一个项目。最后,对于那些需要使用Rust编写和维护Web应用程序的新手,这本书也是不错的选择。
本书的编排方式
本书分为三部分,共11章和一个附录。
第Ⅰ部分介绍使用Rust编写Web应用程序的原因和方法。
第1章介绍Rust适合哪种环境和团队,并解释为团队或下一个项目选择Rust的原因。该章将Rust与其他语言进行比较,并初步介绍其Web生态系统。
第2章讲述Rust语言基础知识以及完成本书和理解书中代码片段所需的知识,还介绍Web生态系统的基础知识,并描述在Rust中编写异步应用所需的额外工具。
第Ⅱ部分介绍如何创建应用的业务逻辑。
第3章为后续内容打下基础。该章介绍使用的Web框架Warp,以及如何使用JSON响应HTTP GET请求。
第4章涵盖HTTP POST、PUT和DELETE请求,以及如何从内存中读取假数据。该章还介绍urlform-encoded和JSON主体之间的区别。
第5章讲解如何将代码模块化、执行代码检查和格式化。将大段代码拆分为自己的模块和文件,使用Rust的注释系统对代码库进行注释,添加代码检查规则并进行格式化。
第6章介绍如何对运行中的应用程序进行反思。该章解释日志记录和跟踪之间的区别,并展示调试代码的各种方法。
第7章不再教你使用内存存储,而是添加一个PostgreSQL数据库。你将连接到本地主机上的数据库,创建连接池,并在路由函数之间共享该连接池。
第8章教你连接到外部服务,发送数据并处理接收到的响应。该章讨论如何打包异步函数和反序列化JSON响应。
第Ⅲ部分确保一切就绪,以便将代码投入生产环境。
第9章讨论有状态和无状态认证以及它们在代码中的体现。该章引入用户概念并教你添加令牌验证中间件。
第10章对输入变量进行参数化,例如API密钥和数据库URL,并准备将代码库构建在各种架构和Docker环境中。
第11章以单元测试和集成测试结束本书,并介绍如何在每个测试之后启动和关闭模拟服务器。
附录针对审计和编写安全代码提供指导。
本书可以分章阅读。可以使用代码库来查看各章并为当前阅读的部分进行设置。应用程序是逐章构建的,因此如果你跳过某些章节,可能会错过一些信息。不过,章节可以用作一个软参考指南。
关于代码
本书中的代码示例基于 Rust 2021 edition编写,并在Linux和macOS上进行了测试,支持Intel和Apple芯片。
本书包含许多源代码示例,既有带编号的代码清单,也有与普通文本放在一起的代码。在这两种情况下,源代码都以等宽体进行格式化,以与普通文本区分开来。此外,粗体用于突出显示与章节中先前步骤中的代码不同的代码,例如当新功能添加到现有代码行时。在某些情况下,删除线用于表示正在被替换的代码。
在许多情况下,原始源代码已经重新格式化;添加了换行符并重新调整了缩进,以适应书中可用的页面空间。此外,如果正文已对代码进行描述,源代码中的注释通常会从代码清单中删除。代码注释伴随着许多代码清单,以突出显示重要的概念。
扫描本书封底二维码,即可获取本书示例的完整代码。