2.2路径参数 36
2.2.1简单路径参数 37
2.2.2有类型的路径参数 38
2.2.3有类型路径参数的数据验证 38
2.2.4路由访问顺序 39
2.2.5使用枚举类型参数 40
2.3查询参数 42
2.3.1标准查询参数 42
2.3.2可选查询参数 43
2.3.3必选查询参数 44
2.3.4参数类型转换 45
2.3.5同时使用路径参数和查询参数 46
2.3.6案例:三酷猫卖海鲜(一) 47
2.4请求体 48
2.4.1定义请求体的数据模型 49
2.4.2同时使用路径参数、查询参数和请求体 51
2.4.3可选的请求体参数 54
2.4.4同时使用多个请求体 56
2.4.5常规数据类型作为请求体使用 58
2.5表单和文件 59
2.5.1表单数据 59
2.5.2文件上传 60
2.5.3表单和多文件上传 62
2.6案例:三酷猫卖海鲜(二) 62
2.7习题及实验 64
第3章认识响应 66
3.1响应原理 66
3.2响应模型 67
3.2.1认识响应模型 67
3.2.2业务数据模型 71
3.2.3简化数据模型定义 72
3.2.4使用多个响应模型 73
3.3内置响应类 74
3.3.1纯文本响应 75
3.3.2HTML响应 75
3.3.3重定向响应 77
3.3.4JSON响应 78
3.3.5通用响应 79
3.3.6流响应 80
3.3.7文件响应 81
3.4案例:三酷猫卖海鲜(三) 81
3.5习题及实验 83
第4章深入请求和响应 84
4.1在请求中使用类 84
4.1.1查询参数类 84
4.1.2路径参数类 90
4.1.3Cookie参数类 91
4.1.4Header参数类 93
4.1.5Field类 95
4.1.6实现复杂的请求数据模型 97
4.1.7直接使用请求类 101
4.2自定义响应返回数据 102
4.2.1自定义Cookie数据 102
4.2.2自定义Header数据 103
4.2.3默认响应状态码 104
4.2.4自定义响应状态码 105
4.3异常处理 106
4.3.1异常类HttpException 106
4.3.2全局异常处理器 108
4.3.3内置异常处理器 110
4.4中间件技术 112
4.4.1自定义中间件 113
4.4.2调用CORS中间件 113
4.4.3调用UnicornMiddleware中间件 115
4.4.4调用HTTPSRedirectMiddleware中间件 115
4.4.5调用TrustedHostMiddleware中间件 116
4.4.6调用GZipMiddleware中间件 118
4.5案例:三酷猫卖海鲜(四) 118
4.6习题及实验 120
第5章依赖注入 121
5.1依赖注入原理 121
5.2使用函数实现依赖注入 122
5.3使用类实现依赖注入 124
5.4依赖注入的嵌套 125
5.5在装饰器中使用依赖注入 127
5.6依赖项中的yield 129
5.7依赖类的可调用实例 131
5.8案例:三酷猫卖海鲜(五) 133
5.9习题及实验 134
第6章数据库操作 135
6.1SQLAlchemy基本操作 135
6.1.1安装和连接 136
6.1.2定义数据模型 137
6.1.3定义关联关系 139
6.1.4CRUD操作 143
6.1.5直接使用SQL 145
6.2连接MySQL 146
6.2.1安装数据库驱动 146
6.2.2创建项目并连接SQLAlchemy 146
6.2.3创建SQLAlchemy数据库模型 147
6.2.4创建Pydantic数据模型 148
6.2.5实现数据操作 149
6.2.6实现FastAPI请求函数 151
6.3连接MongoDB 154
6.3.1安装MongoDB 155
6.3.2安装数据库驱动 157
6.3.3实现MongoDB中的数据操作 158
6.4连接Redis 160
6.4.1安装Redis 161
6.4.2安装数据库驱动 162
6.4.3实现Redis中的数据操作 163
6.5案例:三酷猫卖海鲜(六) 165
6.6习题及实验 167
第7章安全机制 169
7.1安全机制基本功能 169
7.2添加基于OAuth2的安全机制 171
7.3实现基于OAuth2的安全机制 172
7.3.1创建数据库应用 173
7.3.2增加注册用户功能 175
7.3.3生成令牌 178
7.3.4增加用户登录功能 178
7.3.5获取当前登录用户数据 180
7.4习题及实验 182
第8章异步技术 183
8.1基本概念 183
8.1.1进程/线程 183
8.1.2阻塞/非阻塞 184
8.1.3同步/异步 185
8.1.4并发/并行 185
8.1.5GIL 185
8.2协程 186
8.2.1事件循环加回调 186
8.2.2基于生成器的协程 186
8.2.3使用yieldfrom改进协程 187
8.2.4原生协程 187
8.3Asyncio库介绍 187
8.3.1事件循环 188
8.3.2协程 188
8.3.3Future对象 189
8.3.4Task和可等待对象 189
8.4案例:三酷猫卖海鲜(七) 190
8.5习题及实验 191
第9章企业应用架构 193
9.1应用程序和子应用 193
9.1.1使用环境变量 193
9.1.2应用事件处理 197
9.1.3管理子应用 198
9.1.4管理外部Web应用 200
9.2应用模块管理 201
9.2.1路由类 202
9.2.2应用目录结构 202
9.3页面模板技术 204
9.3.1Jinja2模板入门 204
9.3.2管理静态文件 206
9.4案例:三酷猫卖海鲜(八) 207
9.5习题及实验 210
第10章测试与部署 211
10.1测试工具 211
10.1.1常规测试 211
10.1.2分离测试代码 214
10.1.3应用事件测试 215
10.1.4依赖项测试 216
10.1.5测试数据库 218
10.1.6异步测试工具 219
10.2部署程序 220
10.2.1virtualenv和pip3 221
10.2.2部署到Linux服务器 222
10.2.3部署为后台进程 223
10.2.4使用代理服务 225
10.3案例:三酷猫海鲜项目测试 226
10.4习题及实验 227
第2部分实战篇
第11章核酸采集平台:功能分析与设计 231
11.1需求分析 231
11.2系统设计 232
11.2.1逻辑架构 232
11.2.2技术架构 233
11.2.3数据架构 234
11.3任务分工 235
第12章核酸采集平台:后端项目 236
12.1后端项目环境搭建 236
12.2后端项目目录结构 236
12.3后端项目代码实现 238
12.3.1主文件 238
12.3.2配置文件 239
12.3.3数据库引擎 239
12.3.4登录认证模块 240
12.3.5预约模块 244
12.3.6登记模块 247
12.3.7运行后端项目 250
12.4后端项目部署 253
12.4.1准备服务器环境 254
12.4.2安装数据库环境 254
12.4.3安装Python环境 255
12.4.4上传项目文件 255
12.4.5安装第三方库 255
12.4.6部署为后台进程 256
12.4.7验证部署环境 256
第13章核酸采集平台:前端项目 262
13.1前端开发环境搭建 262
13.2管理端项目目录结构 262
13.3管理端项目代码实现 263
13.4管理端项目运行与发布 270
13.5移动端项目目录结构 272
13.6移动端项目代码实现 273
13.7移动端运行与发布 275
附录A在Win10上安装MySQL数据库 277
附录BVue.js使用介绍 290
附录C附赠代码清单 309
后记 314