Preface
前言

FastAPI框架诞生于2018年12月,如今已经活跃在各大厂家的产品中,如HttpRunner(一个通用测试框架),这足以说明它越来越受到人们的喜爱。截至本书完稿时,FastAPI在GitHub上已收获54100余颗星,且仍然在快速增长中,与Flask这个老牌框架的距离在慢慢拉近(Flask有61800余颗星)。

在国内,使用FastAPI开发Web应用程序已经开始流行。特别是在测试领域,国内有非常多的企业在生产环境中将FastAPI作为主要开发框架。越来越多的Python程序员慢慢从Flask框架迁移到FastAPI,并开始在生产环境中进行应用。

作者之所以被FastAPI吸引,主要是因为它同时支持同步和异步特性。对于同步来说,从Flask迁移过来没什么压力;对于异步来说,FastAPI在单线程的模式下也可以支持更多的任务并发处理,结合依赖注入和各种模型校验等,可以给开发人员带来更快、更高效、更便捷的体验。当然,FastAPI还有很多其他优秀的特性,本书会进行深入分析。

FastAPI的流行之风已形成,但是国内却少有完整地介绍如何将FastAPI应用到生产环境中的教程,这对想使用FastAPI的用户来说无疑是一个坏消息。为此作者在公众号上发布了一系列与FastAPI基础使用相关的文章,得到了读者的广泛好评。有不少读者建议作者写一本内容全面、讲解具体、实战性强的图书,于是,本书诞生了。

适合阅读本书的读者

要想快速且顺畅地掌握本书内容,需要广大读者掌握Python基础知识。若读者对Python完全不了解,则建议先对Python进行简单学习,以便无障碍地阅读本书。

具体来说,适合阅读本书的读者如下:

❑所有Python Web初中级开发人员。

❑想要从其他框架(如Flask、Django等)转向FastAPI的Python工程师。

❑Python Web开发爱好者。

❑Python Web方向的后端工程师/运维工程师。

❑想使用FastAPI进行测试开发工作的工程师。

本书特点

本书的项目中包括了一些常用的知识点,从基础到实战都有所涉及,对于一些常见疑难问题,也有所陈述并提供了对应的解决方案,希望读者可以从中受益。

本书主要在作者多年的项目实践经验基础上编写而成,有以下特点。

(1)内容全面,可满足初中级读者的需求。本书从基础使用、运行原理到进阶扩展再到高级应用,都进行了深度讲解。无论是初级读者的安装部署、快速上手需求,还是中级读者的二次开发、高级实践需求,本书都能很好地满足。

(2)内容实用,可真正帮助读者高效工作。本书所有的案例均来自实际开发项目,围绕一线实践需求展开。尤其对消息队列的使用、缓存限流器的原理和使用、错误统计的实现等读者关心的内容,本书进行了深度解读。通过阅读本书,读者可以真正上手开发自己的项目,并实现独立部署上线。

(3)内含一个大型的完整案例及多个来自一线的小案例。为了帮助读者把所学知识落地到实际工作中,本书给出了大量案例,读者可以边阅读边实操。另外,为了完整展现开发全流程,让读者掌握使用FastAPI开发项目的方法,本书还给出了一个大型综合案例——预约挂号系统,其中包括项目框架结构规划、路由分组模块化、数据表模型设计、数据库配置、API实现、异常错误处理、日志记录、订单处理、接口测试、部署上线等内容。

(4)提供完整且可运行的示例源代码。每章所涉及的示例代码都是完整可运行的。通过示例代码,读者可以看到FastAPI对相关功能的实现过程,也能直观体验具体业务逻辑的处理过程。

开发工具版本说明

本书使用的开发工具版本如下:

❑Python 3.9.5。

❑FastAPI 0.72.0。

❑PyCharm IDE 2021.2。

❑本地环境开发主要使用Windows 10,生产环境部署基于Linux的CentOS 7.6。

反馈与交流

本书中的所有示例代码均托管于码云(https://gitee.com/xiaozhong1988/fastapi_tutorial)上,读者可以通过安装Git客户端来获取相关示例代码。

虽然作者使用FastAPI框架已有些时日,并在生产环境中进行了正式应用,但是不同企业或个人的业务环境、使用场景千差万别,加之作者的水平有限,所以本书给出的部分代码的写法可能不是最优的,也可能存在错误。关于代码错误和优化的相关问题,欢迎大家批评指正,也恳请读者不吝赐教。

读者可以关注公众号“程序员小钟同学”,也可以加入QQ群(247491107),与众多FastAPI的爱好者一起学习交流。

致谢

首先要感谢FastAPI框架的作者Tiangolo创造了这么优秀的产品。

其次要感谢TurboSnail研发团队的领航员马杰老师,是他带我进入软件开发领域。

还要感谢在IT之路上能让作者坚持下来并给予很多指导和帮助的陈焕老师,在作者灰心丧气时,陈老师给予了鼓励及支持,没有陈老师的帮助就没有作者在IT领域的成就。感谢在本书编写的过程中给予作者帮助的郭志强、李时滨及IT之路上的其他伙伴们,他们给作者的帮助是无价的。感谢龙艳给予作者的肯定和支持。还要特别感谢哥哥钟远幸给予的建议和指导。

另外,还要感谢教导过并时时记挂着作者的刘善初和黄宗宜老师。

最后要特别感谢在创作本书期间家人给予的帮助,特别是父亲和母亲的无私关怀和照顾。