首页>参考读物>计算机科学与技术>综合

FastAPI Web开发入门、进阶与实战
作者 : 钟远晓 著
丛书名 : Web开发技术丛书
出版日期 : 2023-10-25
ISBN : 978-7-111-73648-6
定价 : 129.00元
扩展资源下载
扩展信息
语种 : 简体中文
页数 :
开本 : 16
原书名 :
原出版社:
属性分类: 店面
包含CD : 无CD
绝版 : 未绝版
图书简介

这是一本从实战角度介绍FastAPI web开发的入门与进阶型技术书。本书没有过多的理论介绍,完全从一线工作角度入手,介绍日常web开发需要掌握的相关知识。本书共分为4篇16章:
第1篇是基础篇,主要介绍FastAPI的基础知识,包括FastAPI的基本信息、安装使用、常规操作、中间件、数据库相关内容。作为初学者,掌握这部分内容就可以快速上手使用FastAPI,处理各种日常问题。
第二篇是进阶篇,主要围绕与FastAPI相关的高级技能展开,包括异常处理、功能扩展、安全认证、性能、测试等相关内容。
第三篇是实战篇,主要从案例的角度对FastAPI在典型应用场景中的落地进行分享,包括短链应用、websocket、基于公众号的挂号系统等应用场景。
第四篇是部署篇,这部分重点介绍如何实现FastAPI的自动化部署,这数据高阶人员必备技能。本篇提供了三种自动化部署方式。

图书特色

FastAPI社区贡献者与实践者的实战笔记,获得多家大厂技术人员及FastAPI使用者鼎力推荐。
基于真实工作场景展开,涵盖所有FastAPI入门知识,快速搭建API、路由处理、模型验证、数据库集成等关键技巧,以及运维、监控和部署实践,内含多个大型综合案例。

上架指导

计算机\Web开发

封底文字

本书由浅入深地介绍了FastAPI的原理与实践,并通过大量案例讲解了与FastAPI相关的技术要点和难点。通过本书读者可以轻松掌握并使用FastAPI。总之,这是一本非常接地气的入门并实践FastAPI的好书。
——陈焕 北京银丰新融科技开发有限公司 项目总监
《我的第一个Python Web开发框架》与《从零开始编写自己的C#框架》作者

对于软件开发来说入门是最大的难点,而Web开发因新技术、新框架众多,对初学者来说入门就更难了。聚焦到FastAPI,在缺少足够实践经验的情况下,如何选择和构建一个完整的技术栈?本书给出一套有效的解决方案,这套方案可以让初学者少走弯路,不踩坑。本书还给出很多作者精心提炼的一线案例,这些案例代码可以直接用于生产环境,而其中包含的丰富经验和实用价值是API文档中没有的,是纯知识验证型示例代码中没有的。阅读本书,学习技术,领悟一名老程序员的经验!
——马杰 副教授,TurboSnail软件研发团队负责人

我很荣幸为广大读者推荐这本关于FastAPI的杰作。看完本书及钟老师的博客后,我成功构筑了分布式架构造数平台。如今,造数平台在公司内部广受赞誉,在公司外部得到了众多开发者的高度认可和使用。我要向钟兄表达由衷的感激,同时期盼这本书能为更多的读者打开FastAPI的神奇之门,成为大家编程旅程中的永恒知音。
——章福鹏 米哈游 业务平台组/基础服务组/运维平台组 开发工程师

本书对FastAPI基础知识以及如何使用FastAPI进行了详细说明,对于常见的FastAPI相关的问题也进行了非常清晰和透彻的解析,值得学习以及参考。
——周浩辉 广东省电信规划设计院 数据库系统工程师

FastAPI能够以惊人的速度处理高并发请求,并且提供强大的类型提示和自动文档生成功能,使得开发过程更加高效和可靠。本书是难得的入门FastAPI的好书,书中从基础到实践都有详细介绍,对于想要自己构建一个完整后端应用的读者来说,本书值得参考学习。
——郭志强 佛山科桥科技有限公司 技术总监

图书目录

前言
第一部分 基础篇
第1章 认识Fastapi
1.1 fastapi 项目概述
1.1.2 为什么会有Fastapi
1.1.3 Fastapi与其他Python web框架的对比
1.1.4 Fastapi优势与特性
1.2 开发环境搭建
1.2.1 安装python语言包
1.2.2 pycharcm IDE 安装
1.2.3 pycharcm IDE 配置解析器
1.2.4 切换设置PIP安装源
1.3 fastapi 基础准备
1.3.1 HTTP 基础
1.3.2 asyicio 基础认识
1.3.3 Pydantic 类型注解认识
第2章 Fastapi 初步使用
2.1 Fastapi 依赖库安装
2.1.1 部分安装
2.1.1 全部安装
2.2 简单实例启动
2.2.1 创建实例对象
2.2.2 路由注册
1:路由URL和端点
2:路由分类
3:同步路由和异步区别
4:蓝图路由
2.2.3 命令行启动
2.2.4 交互式API文档
2.3 uvicorn 启动服务
2.3.1 uvicorn.run 启动服务
2.3.2 uvicorn.run 其他配置参数说明
2.4 后端渲染模板示例
2.4.1 项目结构规划
2.4.2 示例代码说明

第3章 Fastapi 基础入门详解
3.1 应用配置读取
3.1.1 作用
3.1.2 应用场景
3.2 API文档描述使用
3.2.1 接口基本的文档描述
3.2.2 Config来描述接口参数的示例
3.3 Request请求参数处理
3.3.1 查询参数和路径参数处理
3.3.2 复合型查询参数
3.3.3 参数的必选和可选定义方式
3.3.4 匹配带‘/’等关键子路径参数兼容处理
3.3.5 Query、Path、Body,Form进行校验查询参数
3.3.6 基于pydantic中的BaseModel进行校验参数
3.3.7 请求头Header操作
3.3.8 Cookie的操作
3.4 Response响应报文
3.4.1 使用response_model定义响应报文
3.4.2 使用JSONResponse进行响应体报文返回
3.4.3 返回字符串PlainTextResponse
3.4.4 返回HTMLResponse响应报文
3.4.5 重定向处理
3.4.6 文件及文件流响应报文
3.4.7 自定义Response
3.5 异常处理机制
3.5.1 HTTPException异常处理
3.5.2 HTTPException添加自定义异常响应头
3.5.3 自定义HTTPException
3.5.4 覆盖FastAPI默认的异常处理
3.6 startup和shutdown事件
3.6.1 startup事件
3.6.2 shutdown事件

第4章 Fastapi 中间件机制详解
4.1 中间件认识
4.1.2 中间件定义
4.1.2 中间件作用
4.2 Fastapi 中间件使用
4.2.1 最简的http请求类型中间件
4.2.2 HTTPSRedirectMiddleware中间件
4.2.3 TrustedHostMiddleware中间件
4.2.4 GZipMiddleware中间件
4.2.5 CORSMiddleware中间件
4.3 自定义中间件
4.3.1 自定义类形式中间件
4.3.2 基于BaseHTTPMiddleware自定义
第5章 Fastapi 依赖注入机制详解
5.1 依赖注入认识
5.1.2 依赖注入定义
5.1.2 依赖注入作用
5.1.3 依赖注入和装饰器对比
5.2 依赖注入示例讲解
5.2.1 依赖注入使用示例
5.2.2 把类当作被依赖对象
5.2.3 多层嵌套依赖注入
5.2.4 多个依赖对象注入
5.3 依赖注入问题处理
5.3.1 依赖注入解决获取authorizatio头部问题
5.3.2 扩展依赖注入实现参数传递

第6章 Fastapi 数据库应用
6.1 数据库类型分类
6.1.1 关系型和非关系型数据库选型
6.1.2 数据库ORM介绍及使用
6.2 SQLAlchemy ORM库的使用
6.2.1 SQLAlchemy 入门 和基本使用
6.2.2 在fastapi中集成 SQLAlchemy 同步和异步协程使用
6.3 SQLModel ORM库的使用
6.3.1 SQLModel 入门和基本使用
6.3.2 在fastapi中集成 SQLModel 使用
6.4 Peewee ORM库的使用
6.4.1 peewee 入门和基本使用
6.4.2 在fastapi中集成 peewee-async 同步和异步协程使用
6.5 异步ORM Tortoise-orm库使用
6.5.1 Tortoise-orm入门和基本使用
6.5.2 在fastapi中集成 Tortoise-orm 异步协程使用
6.6 databases 原生异步库的使用
6.6.1 databases入门和基本使用
6.6.2 在fastapi中集成 databases 异步协程使用
6.7 asyncpg 原生异步库的使用
6.7.1 asyncpg 入门和基本使用
6.7.2 在fastapi中集成 asyncpg 异步协程使用
6.8 redis异步库的使用
6.8.1 aioredis入门和基本使用
6.8.2 在fastapi中集成 aioredis异步协程使用

第二部分 进阶篇

第7章 Fastapi 异常处理
7.1 定制全局异常处理
7.1.1 自定义异常类
7.1.3 插件化方式定义全局异常类
7.2 使用sentry来处理异常错误
7.2.1 sentry的介绍和安装
7.2.2 sentry第三方中间件引入及使用

第8章 基于Fastapi 功能扩展实现
8.1 定制统一规范API接口
8.1.1 统一规范API接口必要性
8.1.2 定义统一JSON格式响应报文
8.3 实现类似flask框架的钩子函数
8.3.1 flask框架钩子函数介绍
8.3.2 自定义支持同步和异步event事件
8.3.3 多继承方式扩展Fastapi整合自定义event事件
8.4 自定义路由实现日志记录
8.4.1 日志记录需求说明
8.4.2 loguru日志库引入及使用
8.4.3 扩展 APIRoute类和 APIRouter类方式实现日志记录
8.5 路由批量及嵌套蓝图自动加载机制实现
8.5.1 路由批量加载
8.5.2 嵌套蓝图批量加载
8.5.3 扩展 APIRouter类实现日志及嵌套蓝图自动加载
8.6 统一扩展插件安装
8.6.1 扩展插件结构定义
8.6.2 redis缓存扩展插件
8.6.3 slowapi限流扩展插件
8.7 异步HTTP客户端封装
8.7.1 aiohttp介绍及使用
8.7.2 httpx介绍及使用
8.7.3 基于aiohttp封装携带日志记录客户端
第9章 Fastapi的安全认证机制oauth2应用
9.1 oauth2的认识和使用
9.1.1 oauth2的认识及分类
9.1.2 oauth2应用场景分析
9.2 oauth2四种模式简单应用

第10章 性能分析及单元测试
10.1 基于profile进行简单性能分析
10.1.1 profile介绍及使用
10.1.2 profile第三方中间件引入及使用
10.1.3 PySnoope使用
10.2 单元测试使用
10.2.1 pytest介绍和使用
第三部分 实战篇
第11章 短链应用同步和异步实战
11.1 项目概览
11.1.1 项目介绍
11.1.2 项目数据库表设计
11.1.3 项目代码结构规划
11.2 项目代码编写
11.2.1 生成数据库model
11.2.2 编写业务逻辑serivce
11.2.3 编写生成同步短链请求路由
11.2.4 编写请求短链跳转重定向长链接路由
11.2.5 项目运行及验证
11.2.6 使用sqlalchemy异步方式改造短链项目
11.2.7 基于reids增加短链访问统计
第12章 websocket 简易聊天室实战
12.1 项目概览
12.1.1 项目介绍
12.1.2 项目数据库表设计
12.1.3 项目代码结构规划
12.2 项目代码编写
12.2.1 生成用户信息数据库model
12.2.2 定义服务端websocket 路由
12.2.3 定义房间管理类
12.2.4 websocket 客户端编写
12.2.5 项目运行及验证
12.2.6 多workers下跨进程通讯处理
第13章 基于微信公众号内挂号预约系统应用开发实战
13.1 项目需求分析
13.1.1 项目功能点概要分析
13.1.2 技术点难点需求分析
13.1.3 项目代码结构规划
13.2 基于VUE2.0前端页面设计规划
13.2.1 前端页面规划说明
13.2.2 首页页面制作与实现
13.2.3 预约页面制作与实现
13.2.4 预约详情制作与实现
13.2.5 订单提交制作与实现
13.2.6 预约结果制作与实现
13.2.7 预约历史查询制作与实现
13.2.8 对接后端api接口实现数据渲染
13.3 后端数据模型设计
13.2.1 数据字典设计
13.3.2 反向基于数据库表生产SQLAlchemy模型
13.4 业务逻辑对接公众号内微信支付实现篇
13.4.1 微信支付基础准备
13.4.2 微信消息通知模板
13.4.3 微信支付对接流程
13.4.4 微信支付对接实现
13.4.5 微信支付扩展插件化
13.4.6 微信支付异步和同步实现
13.5 业务逻辑-消息队列篇
13.5.1 消息队列说明
11.5.2 rabbitmq消息队列介绍
11.5.3 rabbitmq消息队列安装
13.5.4 rabbitmq消息队列使用
13.5.5 引入rabbitmq处理超时未支付订单
13.6 业务逻辑-预约号源数扣减问题篇
13.6.1 扣减预约号源数问题简单分析
13.6.2 确保数据一致性问题处理方案
13.6.3 分布式锁解决扣减预约号源数
13.7 业务逻辑API接口具体实现
13.6.1 首页获取医院信息接口
13.6.2 获取医院在职医生列表信息接口
13.6.3 获取医院在职医生排班信息接口
13.6.4 获取预约排班时间详情信息接口
13.6.5 提交预约订单并支付接口
13.6.6 微信支付回调接口
13.6.7 历史预约详情列表接口
13.6.7 预约订单取消接口
13.6.8 未支付订单再次支付接口
第四部分 部署篇
第14章 vue前段部署篇

14.1 nginx 安装篇
14.1.1 nginx 介绍
14.1.2 nginx 安装
14.1.3 nginx 使用
14.2 Vue项目部署
14.2.1 nginx部署Vue前端项目
14.2.2 nginx多实例的负载均衡分流
第15章 SVN自动化部署篇
15.1 基于linux下SVN后端自动化部署篇
15.1.1 svn 自动化发布代码篇
15.1.1.1 svn 服务端安装
15.1.1.2 svn 服务端配置
15.1.1.3 svn 客户端安装
15.1.2 supervisor系统进程管理篇
15.1.2.1 supervisor 安装
15.1.2.2 supervisor 配置
15.1.2.3 supervisor 使用
15.1.3 SVN自动化部署流程
15.1.2.1 svn代码仓库的创建
15.1.3.2 svn项目配置及钩子函数配置
15.1.3.3 项目检出和自动提交

第16章 Gogs+Drone 自动化部署
16.1 基于linux下Gogs+Drone 后端自动化部署
16.2.1 docker 篇
16.2.1.1 docker 安装
16.2.1.2 dockerfile的介绍
16.2.1.3 docker-compose容器编排
16.2.2 Gogs 代码管理篇
16.2.2.1 Gogs 安装
16.2.2.2 Gogs 使用
16.2.3 Drone 自动化CI篇
16.2.3.1 Drone 安装
16.2.3.2 Drone 使用
16.2.4 完整自动化部署流程
16.2.4.1搭建gogs+drone环境
16.2.4.2 定义项目dockerfile
16.2.4.3 定义.drone.yml流水线
16.2.4.4 提交代码到仓库并查看drone流水构建

教学资源推荐
作者: 董丽华 胡予濮 曾勇 编著
作者: (巴西)Paulo S. R. Diniz; Eduardo A. B. da Silva; Sergio L. Netto 著 里约热内卢联邦大学
参考读物推荐
作者: 陈洁 等编著
作者: 西门柳上 马国良 刘清华 著