logo
0
0
WeChat Login

Python FastAPI Web 开发从入门到项目实战


内容简介 · · · · · ·

FastAPI是基于Python语言的轻量级、成熟的Web后端开发框架。它除了简单易学、能提供自动生成的API文档外,还有一个重要优点是支持异步技术,其性能可以与NodeJS、GO语言相媲美,为Web项目高并发访问提供了更好的技术选择。另外,FastAPI定位为商业级的前后端分离开发框架,为前端技术提供了简单易用的调用接口。目前,国内外不少互联网企业,都采用该框架作为商业项目开发基础。本书第1部分为基础篇,系统介绍了FastAPI的使用;第2部分为实战篇,通过后端FastAPI框架与前端Vue.js框架的组合,给出了一个商业实战项目案例。

本书适合希望快速开发Web项目的IT人员、高校相关专业学生及老师、培训机构学员阅读学习。

作者简介 · · · · · ·

刘瑜,高级信息系统项目管理师,具有20多年C、ASP、BASIC、FoxBASE、Delphi、Java、C#、Python等编程经验,软件工程硕士、硕士企业导师、大数据重点实验室主任。开发过商业项目20余套,承担省部级千万级别项目5个,发表国内外论文10余篇。出版了《战神——软件项目管理深度实战》《NoSQL数据库入门与实践》《Python编程从零基础到项目实战》《Python编程从数据分析到机器学习实践》《算法之美——Python语言实现(微课视频版)》《Python Django Web从入门到项目实战》。

安义,系统架构师,部门经理,具有20多年软件开发经验,主导过多个行业(医疗、教育、互联网、地产、游戏、汽车、餐饮等)的软件系统开发工作。熟悉多种开发语言和开发框架,具有丰富的软件实战经验。曾是腾讯公司负责袋鼠跳跳应用的研发负责人,目前为“三酷猫”团队的软件技术总监。《Python Django Web从入门到项目实战》第二作者。

陈逸怀,温州城市大学教师教学发展中心主任、高级讲师,天津职业技术师范大学教育学博士研究生(自动化教育方向)、硕士生合作导师,软件设计师、技师,中国计算机学会会员,中国创客教育协会理事,温州市计算机学会理事,国家一类职业技能大赛裁判,青少年机器人大赛国家二级裁判,国家职业鉴定高级考评员。主编、副主编相关教材十本,主持并参与厅局级以上课题十余项,发表相关论文十余篇。

喻小菲,专职软件高级工程师,10余年软件项目开发经验,FastAPI专业技术群群主,承担过物联网、游戏、网络安全等10多个商业项目。主要从事Python Web方向的开发工作,对FastAPI、Sanic、Django、Flask等网络框架均有研究,始终追踪Python开发最前沿的发展方向,具有丰富的Python Web开发经验。

目录 · · · · · ·

第1部分 基础篇

  • 第1章 认识FastAPI 3
    • 1.1 Web基础知识 3
      • 1.1.1 Web简介 3
      • 1.1.2 超文本传输协议基础 7
    • 1.2 初识FastAPI 10
      • 1.2.1 FastAPI简介 10
      • 1.2.2 安装FastAPI 11
      • 1.2.3 验证安装结果 12
    • 1.3 Hello三酷猫 13
      • 1.3.1 第一个程序,Hello三酷猫 13
      • 1.3.2 OpenAPI文档 14
      • 1.3.3 Python中的异步语法 15
    • 1.4 FastAPI框架构成 16
      • 1.4.1 FastAPI框架功能 16
      • 1.4.2 Python类型提示 17
      • 1.4.3 Pydantic框架 21
      • 1.4.4 Starlette框架 24
    • 1.5 PyCharm代码编辑工具 25
      • 1.5.1 PyCharm简介及安装 25
      • 1.5.2 PyCharm常用功能 30
    • 1.6 习题及实验 34
  • 第2章 认识请求 35
    • 2.1 请求原理 35
    • 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.2 HTML响应 75
      • 3.3.3 重定向响应 77
      • 3.3.4 JSON响应 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.3 Cookie参数类 91
      • 4.1.4 Header参数类 93
      • 4.1.5 Field类 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.1 SQLAlchemy基本操作 135
      • 6.1.1 安装和连接 136
      • 6.1.2 定义数据模型 137
      • 6.1.3 定义关联关系 139
      • 6.1.4 CRUD操作 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 添加基于OAuth 2的安全机制 171
    • 7.3 实现基于OAuth 2的安全机制 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.5 GIL 185
    • 8.2 协程 186
      • 8.2.1 事件循环加回调 186
      • 8.2.2 基于生成器的协程 186
      • 8.2.3 使用yield from 改进协程 187
      • 8.2.4 原生协程 187
    • 8.3 Asyncio库介绍 187
      • 8.3.1 事件循环 188
      • 8.3.2 协程 188
      • 8.3.3 Future对象 189
      • 8.3.4 Task和可等待对象 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.1 Jinja2模板入门 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.1 virtualenv和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 在Win 10上安装MySQL数据库 277
  • 附录B Vue.js使用介绍 290
  • 附录C 附赠代码清单 309
  • 后记 314

About

https://github.com/ZhangXinNan/Python_FastAPI_Web

Language
JavaScript72.2%
Python25.7%
HTML2.1%
CSS0%