Python FastAPI Web开发从入门到项目实战(视频版)
- ISBN:9787568087223
- 装帧:一般胶版纸
- 册数:暂无
- 重量:暂无
- 开本:16开
- 页数:328
- 出版时间:2022-10-01
- 条形码:9787568087223 ; 978-7-5680-8722-3
本书特色
国内难得的FastAPI书籍,FastAPI是Python技术体系里轻量级Web框架,在异步处理上具有优异的性能表现,是Python下极其优秀的轻量级框架。本书内容编排从易到难,从基础到项目实战,为开发人员提供了完整的学习内容。
内容简介
FastAPI是基于Python语言的轻量级、成熟的Web后端开发框架。它除了简单易学、能提供自动生成的API文档外,还有一个重要优点是支持异步技术,其性能可以与NodeJS、GO语言相媲美,为Web项目高并发访问提供了更好的技术选择。另外,FastAPI定位为商业级的前后端分离开发框架,为前端技术提供了简单易用的调用接口。目前,国内外不少互联网企业,都采用该框架作为商业项目开发基础。本书第1部分为基础篇,系统介绍了FastAPI的使用;第2部分为实战篇,通过后端FastAPI框架与前端Vue.js框架的组合,给出了一个商业实战项目案例。
目录
第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
节选
第1章 认识FastAPI在正式使用FastAPI框架编写代码前,需要读者先了解一下Web的一些基础知识。如果没有接触过这些基础知识,则可以在网上搜索这些知识的关键字,如“HTML”,学习它的一些基本功能的使用,这样更有利于本书后续的学习。对于Python语言的掌握是学习本书的前提条件。本章提供了FastAPI安装、FastAPI框架构成等入门知识,为后续知识的学习提供基本条件。本书主要通过PyCharm代码开发工具,进行代码编写和调试,所以先要安装该工具,然后掌握该工具基本的使用功能。本章的主要内容为:(1)Web基础知识;(2)初识FastAPI;(3)Hello三酷猫;(4)FastAPI框架构成;(5)PyCharm代码编辑工具。本节为初学者提供学习FastAPI时需要了解的Web基础知识,以方便后续学习,如果已经具备Web相关基础知识,可以跳过本节,直接学习下节内容。1.1.1 Web简介Web(World Wide Web,WWW)翻译为中文叫全球广域网或万维网,俗称网站(WebSite),它是一种基于超文本(Hyper text)、超媒体(Hyper media)、超文本传输协议(HTTP)建立在Internet上的分布式信息服务系统。普通用户可通过浏览器的网址(WebSite Address)访问对应网站。??1. 网站网站为访问者提供各种各样的栏目信息,这些信息在格式上包括了文本、图片、视频、声音、动画等。如图1.1所示为新浪网站的主界面,为访问者提供了各种各样的栏目信息,如个人内容共享的微博、大量的广告信息等。人们通过电脑上的浏览器(Browser),就可以轻松访问该网站。作为本书的读者,不是简单地访问一个网站,而是要深入了解网站的技术原理,掌握技术内容,从而学会自己构建网站。图1.1 新浪网站(1)超文本。超文本主要指带有超链接的、特定文本组织格式的电子文档。如网页在显示相应格式内容的同时,可以内嵌其他网页的链接,点一下就可以进入其他网页。网页的主要超文本格式使用了超文本标记语言(Hyper Text Markup Language,缩写:HTML)。在新浪网站上随意打开一个网页,在其上点击鼠标右键,选择弹出菜单的“查看源代码”选项,就可以看到相应的超文本格式代码,如图1.2所示。(2)超媒体。超媒体是超文本和多媒体在浏览器环境下的结合结果,为浏览的网页提供了图片、动画、声音、视频等效果。实现过程就是把上述媒体文件,以超文本指定格式链接到网页上并展现出来。(3)超文本传输协议。超文本传输协议是浏览器访问网站的简单的请求、响应协议。通过该协议,实现了从浏览器端发送访问信息到网站,网站再把相应的网页信息发送回浏览器端的信息传输过程。图1.2 网页上的HTML超文本代码(部分)在浏览器里通过网址访问网站,实质上是发送HTTP请求。HTTP分9种请求方式,如表1.1所示。表1.1 HTTP的9种请求方式序号 请求方式 功能说明1 GET 请求指定资源地址的网页信息,并返回实体数据2 HEAD 与GET请求类似,返回的响应中没有具体内容,用于获取响应头数据3 POST 向指定资源地址提交数据进行处理请求(如提交表单、上传文件)4 PUT 向指定资源地址上传数据内容(从浏览器端向服务器端传送数据取代指定的文档内容)5 DELETE 向指定资源地址发送删除资源的请求6 CONNECT HTTP/1.1协议中预留给能够将连接改为管道方式的代理服务器7 OPTIONS 获取服务器针对特定资源所支持的HTML请求方法8 TRACE 回复并显示服务器收到的请求,用于测试和诊断9 PATCH 是对PUT方法的补充,用来对已知资源进行局部更新表1.1中*常用的请求方式为GET和POST。如在新浪网上点击一个网页上的链接,可以看作是一个GET请求方式的发生,它根据HTTP协议去网站获取指定的数据(如另外一个带数据的网页),并把数据返回到浏览器上,通过网页跳转在新页面上显示出来。又如在新浪登录页面输入用户名、密码后,将此数据提交给网站,这个提交开始的请求方式是POST。提交成功后返回成功状态数据,并转入登录成功的新页面。2. 网站的构成网站由一个个网页(Web Page)构成。由此,程序员需要设计各种各样的网页,然后通过网站框架把它们组织起来,供不同的用户使用。从程序员或网站管理员角度来看,网站分前端和后端。前端就是通过浏览器可以访问的网页功能和内容,主要供网站访问者使用;后端就是信息发布管理系统,包括了登录网站用户信息的管理、使用功能权限的管理、栏目信息的编辑与发布、发布内容的统计、网站访问量统计等。3. 因特网(Internet)Internet,也称国际互联网,其将全球各大洲主要网络链接在一起,是提供信息共享与服务的世界上*大的信息资源网络。Internet主要由通信链路、服务器、域名、路由设备、信息软件(网站、浏览器、通讯社交软件等)、个人终端组成,如图1.3所示。图1.3 Internet(1)通信链路包括有线链路、无线链路。有线链路包括国际跨洋海底光缆、国家骨干光纤通道、城市光纤通道、小区楼宇通信线路等;无线链路包括卫星通信链路、无线通讯发送站、家庭无线网络等。这些都是保证数据顺利传输的通信线路。(2)服务器是用于安装网站等软件系统的专用计算机,也是程序员把开发好的网站进行部署并运行的实际位置。同时服务器用来存储海量的信息数据,包括各种文件、数据库等。另外,DNS(Domain Name Server,域名服务器)服务器提供域名、IP地址转换统一管理功能。(3)域名(Domain Name)又叫网域,是Internet上由一串用点分隔的名字组成的某一台服务器或服务器组的名称,用于在数据传输时对服务器的定位标识。其格式如下:www...如,新浪的域名为www.sina.com.cn,“www”代表万维网,“sina”为用户名,“com”为二级域名,“cn”为一级域名,它们之间用点号分隔。“com”用于工商金融企业,“cn”代表中国,为China的缩写。由此,部署完成的网站要正式运行,必须先向域名服务商申请域名,并进行备案。(4)路由设备则为普通用户通过浏览器访问不同地方的服务器提供了网址寻址、转发数据的功能。(5)信息软件,在本书中就是指网站。(6)个人终端主要包括了台式电脑及浏览器、手机终端及浏览器、平板电脑及浏览器等。 ·········
作者简介
刘瑜,高级信息系统项目管理师,具有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开发经验。
-
乡村振兴新技术:新时代农村短视频编辑技术基础入门
¥12.8¥32.0 -
AI绘画+AI摄影+AI短视频从入门到精通
¥45.5¥79.8 -
企业AI之旅
¥43.5¥79.0 -
机器学习
¥59.4¥108.0 -
基于知识蒸馏的图像去雾技术
¥61.6¥88.0 -
软件设计的哲学(第2版)
¥51.0¥69.8 -
智能算法优化及其应用
¥52.4¥68.0 -
Photoshop图像处理
¥25.5¥49.0 -
R语言医学数据分析实践
¥72.3¥99.0 -
大模型推荐系统:算法原理、代码实战与案例分析
¥62.3¥89.0 -
剪映 从入门到精通
¥25.7¥59.8 -
游戏造梦师----游戏场景开发与设计
¥67.6¥98.0 -
SAR图像处理与检测
¥35.4¥49.8 -
人工智能
¥29.4¥42.0 -
中文版PHOTOSHOP 2024+AI修图入门教程
¥59.3¥79.0 -
WPS办公软件应用
¥25.2¥36.0 -
格拉斯曼流行学习及其在图像集分类中的应用
¥13.7¥28.0 -
轻松上手AIGC:如何更好地向CHATGPT提问
¥40.3¥62.0 -
元宇宙的理想与现实:数字科技大成的赋能与治理逻辑
¥61.6¥88.0 -
云原生安全:攻防与运营实战
¥66.8¥89.0