新書推薦:
《
爱琴海的光芒 : 千年古希腊文明
》
售價:HK$
199.4
《
不被他人左右:基于阿德勒心理学的无压力工作法
》
售價:HK$
66.1
《
SDGSAT-1卫星热红外影像图集
》
售價:HK$
445.8
《
股市趋势技术分析(原书第11版)
》
售價:HK$
221.8
《
汉匈战争全史
》
售價:HK$
99.7
《
恶的哲学研究(社会思想丛书)
》
售價:HK$
109.8
《
不止江湖
》
售價:HK$
98.6
《
天才留步!——从文艺复兴到新艺术运动(一本关于艺术天才的鲜活故事集,聚焦艺术史的高光时刻!)
》
售價:HK$
154.6
|
編輯推薦: |
FastAPI是一个Web框架,可用于Python 3.6及其更高版本构建API。有了这本书,您将能够使用实际示例创建快速可靠的数据科学API后端。
|
內容簡介: |
本书从FastAPI框架的基础知识和相关的Python编程概念开始讲解。然后,您将了解该框架的所有方面知识,包括其强大的依赖注入系统,以及如何使用它与数据库通信、实现身份验证和集成机器学习模型等。之后,您将学习与测试和部署相关的实践,以运行高质量和健壮的应用程序。后,您还将学习Python数据科学软件包的应用生态系统。随着学习的深入,您将学习如何使用FastAPI在Python中构建数据科学应用程序。本书还演示了如何开发快速高效的机器学习预测后端,并对其进行测试,以获得性能。后,您将看到如何使用WebSocket和Web浏览器作为客户端实现人脸实时检测。在本书的后,您不仅学习如何在数据科学项目中实现Python,还学习如何在FastAPI的帮助下维护和设计它们,以满足高编程标准。
本书面向对FastAPI及其生态系统感兴趣的数据科学家和软件开发人员,并以此构建数据科学应用程序。读者需要具备数据科学和机器学习概念的基本知识,以及了解如何在Python中应用它们。
|
關於作者: |
Francois Voro毕业于法国圣埃蒂安大学和西班牙阿利坎特大学,获得机器学习和数据挖掘硕士学位。Fran?ois是一名全栈web开发人员和数据科学家,在SaaS行业有卓越的成绩,特别实在Python后端和REST API领域。他还是FastAPI Users(FastAPI身份验证库)的创建者和维护者,也是FastAPI社区的专家之一。
|
目錄:
|
第1章 快速入门:基础知识 / 1
部分Python和FastAPI 概述
第1章Python开发环境设置3
1.1技术要求3
1.2使用pyenv安装Python发行版3
1.3创建Python虚拟环境5
1.4使用pip安装Python包7
1.5安装HTTPie命令行实用程序7
1.6总结9
第2章Python 编程特性10
2.1技术要求10
2.2Python编程基础10
2.2.1运行Python脚本11
2.2.2缩进问题12
2.2.3使用内置的类型13
2.2.4使用数据结构:列表、元组、字典和集合13
2.2.5执行布尔逻辑并检查是否存在17
2.2.6程序控制流19
2.2.7定义函数21
2.2.8编写及使用包和模块23
2.3列表解析和生成器25
2.3.1列表解析25
2.3.2生成器27
2.4编写面向对象的程序28
2.4.1定义类29
2.4.2实现魔法函数30
2.4.3重用逻辑并使用继承避免重复33
2.5使用mypy进行类型提示和类型检查36
2.5.1开始36
2.5.2typing模块37
2.5.3可调用的类型函数签名39
2.5.4Ang和cast40
2.6异步I/O41
2.7总结44
第3章使用FastAPI开发RESTful API45
3.1技术要求45
3.2创建个端点并在本地运行45
3.3处理请求参数48
3.3.1路径参数48
3.3.2查询参数53
3.3.3主体数据54
3.3.4表单数据和文件上传58
3.3.5Header和Cookie62
3.3.6请求对象64
3.4自定义响应65
3.4.1路径操作参数65
3.4.2响应参数69
3.4.3引发HTTP错误73
3.4.4构建自定义响应75
3.5使用多个路由器构建一个更大的项目78
3.6总结81
目录Python FastAPI构建数据科学应用第4章在FastAPI中管理Pydantic数据模型82
4.1技术要求82
4.2使用Pydantic定义模型及字段类型82
4.2.1标准字段类型83
4.2.2可选字段和默认值87
4.2.3字段验证88
4.2.4动态默认值89
4.2.5使用Pydantic类型验证邮件地址和URL90
4.3使用类继承创建模型变量92
4.4使用Pydantic添加自定义数据验证94
4.4.1在字段级别上应用验证94
4.4.2在对象级别上应用验证95
4.4.3在Pydantic解析之前应用验证96
4.5使用Pydantic对象96
4.5.1将对象转换为字典97
4.5.2从子类对象创建实例98
4.5.3使用部分实例更新一个实例100
4.6总结101
第5章FastAPI中的依赖注入102
5.1技术要求102
5.2什么是依赖注入102
5.3创建和使用函数依赖项103
5.4创建和使用具有类的参数化依赖项107
5.5在路径、路由器和全局级别使用依赖项110
5.5.1在路径装饰器上使用依赖项110
5.5.2在整个路由器上使用依赖项111
5.5.3对整个应用程序使用依赖项112
5.6总结114
第二部分使用FastAPI构建和部署完整的Web后端
第6章数据库和异步ORM117
6.1技术要求117
6.2关系数据库和NoSQL数据库118
6.2.1关系数据库118
6.2.2NoSQL数据库119
6.2.3选择数据库120
6.3使用SQLAlchemy与SQL数据库通信121
6.3.1创建表架构122
6.3.2连接到数据库123
6.3.3进行插入查询124
6.3.4进行选择查询125
6.3.5进行更新和删除查询127
6.3.6添加关系128
6.3.7用Alembic建立数据库迁移系统131
6.4使用Tortoise ORM与SQL数据库通信135
6.4.1创建数据库模型135
6.4.2设置Tortoise引擎137
6.4.3创建对象138
6.4.4获取和过滤对象139
6.4.5更新和删除对象140
6.4.6添加关系141
6.4.7用Aerich建立数据库迁移系统144
6.5使用Motor与MongoDB数据库通信146
6.5.1创建与MongoDB ID兼容的模型146
6.5.2连接到数据库147
6.5.3插入文档148
6.5.4获取文件149
6.5.5更新和删除文档151
6.5.6嵌套文档152
6.6总结153
第7章FastAPI中的管理认证与安全性154
7.1技术要求154
7.2FastAPI中的安全依赖关系154
7.3在数据库中安全地存储用户及其密码157
7.3.1创建模型和表158
7.3.2哈希密码159
7.3.3实施注册路线159
7.4检索用户并生成访问令牌160
7.4.1实现数据库访问令牌(access token)160
7.4.2实现登录端点161
7.5使用访问令牌保护端点164
7.6配置CORS并防止CSRF攻击165
7.6.1在FastAPI中进行配置CORS166
7.6.2实现doublesubmit Cookie以防止CSRF攻击171
7.7总结175
第8章在FastAPI中为双向交互通信定义WebSocket176
8.1技术要求176
8.2了解使用WebSocket进行双向通信的原理177
8.3使用FastAPI创建WebSocket177
8.3.1处理并发性180
8.3.2使用依赖项182
8.4处理多个WebSocket连接和广播消息184
8.5总结190
第9章使用pytest和HTTPX异步测试API191
9.1技术要求191
9.2使用pytest进行单元测试192
9.2.1使用参数生成测试194
9.2.2通过创建fixture重用测试逻辑195
9.3使用HTTPX为FastAPI设置测试工具198
9.4为REST API端点编写测试201
9.4.1为POST端点编写测试202
9.4.2使用数据库进行测试203
9.5为WebSocket端点编写测试209
9.6总结211
第10章部署FastAPI项目213
10.1技术要求213
10.2设置和使用环境变量213
10.3管理Python依赖项217
10.4在无服务器平台上部署FastAPI应用程序220
10.5使用Docker部署FastAPI应用程序223
10.5.1编写Dockerfile223
10.5.2构建Docker映像225
10.5.3在本地运行Docker映像225
10.5.4部署Docker映像226
10.6在传统服务器上部署FastAPI应用程序227
10.7总结228
第三部分使用Python和FastAPI构建数据科学API
第11章NumPy和pandas简介231
11.1技术要求231
11.2NumPy入门231
11.2.1创建数组232
11.2.2访问元素和子数组234
11.3使用NumPy操作数组:计算、聚合、比较236
11.3.1数组的加法和乘法238
11.3.2聚合数组:总和、小值、值、平均值等239
11.3.3数组比较239
11.4pandas入门240
11.4.1使用pandas Series获取一维数据240
11.4.2使用pandas DataFrame获取多维数据242
11.4.3导入和导出CSV数据244
11.5总结245
第12章使用scikitlearn训练机器学习模型246
12.1技术要求246
12.2什么是机器学习246
12.2.1监督学习与无监督学习247
12.2.2模型验证247
12.3scikitlearn的基础知识249
12.3.1训练模型和预测249
12.3.2使用pipeline链接预处理器和估计器251
12.3.3通过交叉验证验证模型255
12.4使用朴素贝叶斯模型对数据进行分类255
12.4.1原理256
12.4.2使用高斯朴素贝叶斯对数据进行分类256
12.4.3使用多项式朴素贝叶斯对数据进行分类259
12.5使用支持向量机对数据进行分类260
12.5.1原理260
12.5.2支持向量机在scikitlearn中的应用262
12.5.3查找参数263
12.6总结265
第13章使用FastAPI创建高效的预测API端点266
13.1技术要求266
13.2使用Joblib持久化经过训练的模型266
13.2.1抛弃已训练的模型267
13.2.2加载转储模型268
13.3实现高效的预测端点269
13.4使用Joblib缓存结果271
13.5总结275
第14章使用带FastAPI和OpenCV的WebSockets实现人脸实时检测系统277
14.1技术要求277
14.2OpenCV入门277
14.3实现HTTP端点以对单个图像执行人脸检测280
14.4实现WebSocket以对图像流执行人脸检测282
14.5在WebSocket中从浏览器发送图像流284
14.6在浏览器中显示人脸检测结果287
14.7总结290
|
內容試閱:
|
FastAPI是一个Web框架,可用于Python 3.6及其更高版本构建API。有了这本书,您将能够使用实际示例创建快速可靠的数据科学API后端。
本书从FastAPI框架的基础知识和相关的Python编程概念开始讲解。然后,您将了解该框架的所有方面知识,包括其强大的依赖注入系统,以及如何使用它与数据库通信、实现身份验证和集成机器学习模型等。之后,您将学习与测试和部署相关的实践,以运行高质量和健壮的应用程序。后,您还将学习Python数据科学软件包的应用生态系统。随着学习的深入,您将学习如何使用FastAPI在Python中构建数据科学应用程序。本书还演示了如何开发快速高效的机器学习预测后端,并对其进行测试,以获得性能。后,您将看到如何使用WebSocket和Web浏览器作为客户端实现人脸实时检测。
在本书的后,您不仅学习如何在数据科学项目中实现Python,还学习如何在FastAPI的帮助下维护和设计它们,以满足高编程标准。
读者对象
本书面向对FastAPI及其生态系统感兴趣的数据科学家和软件开发人员,并以此构建数据科学应用程序。读者需要具备数据科学和机器学习概念的基本知识,以及了解如何在Python中应用它们。
本书主要内容
第1章为Python开发环境设置,介绍了Python开发环境的搭建,以便后续开始使用Python和FastAPI。这其中就包含Python常用的各种开发工具。
第2章为Python编程特性,介绍了Python编程的特殊性,特别是块缩进、控制流语句、异常处理和面向对象编程等,以及列表解析和生成器等功能。后,介绍了类型提示和异步I/O是如何工作的。
第3章为使用FastAPI开发RESTful API,介绍了使用FastAPI创建RESTful API的基础知识:路由、参数、请求主体验证和响应,还展示了如何使用专用模块和单独的路由器正确构建FastAPI项目。
第4章为在FastAPI中管理Pydantic数据模型。Pydantic是FastAPI使用的底层数据验证库,本章详细介绍了使用Pydantic定义数据模型。由于类继承,解释了如何在不重复相同代码的情况下实现相同模型的变体。后,展示了如何在这些模型上实现自定义数据验证逻辑。
第5章为FastAPI中的依赖注入,解释了依赖注入是如何工作的,以及如何定义自己的依赖,以便在不同的路由器和端点之间重用逻辑。
第6章为数据库和异步ORM,演示了如何建立与数据库的连接以读取和写入数据,介绍如何使用两个库与SQL数据库异步工作,以及它们如何与Pydantic模型交互。后,向您展示如何使用NoSQL数据库中的MongoDB。
第7章为FastAPI中的管理认证和安全性,展示了如何实现一个基本的管理认证系统,这主要包括保护我们的API端点,并为经过管理认证的用户返回相关数据。另外,还讨论了CORS的实践,以及如何避免CSRF攻击。
第8章在是为FastAPI中为双向交互通信定义WebSocket,帮助我们更好地理解WebSocket,以及如何创建WebSocket和处理通过FastAPI接收的消息。
第9章为使用pytest和HTTPX异步测试API,展示了如何为REST API端点编写测试。
第10章为部署FastAPI项目,介绍了在实际项目中顺利运行FastAPI应用程序的常见配置。另外,还探讨了几个部署选项:DigitalOcean应用程序平台、Docker和传统的服务器设置。
第11章为NumPy和pandas简介,介绍了Python中用于数据科学的两个核心库:NumPy和pandas。我们了解了如何使用NumPy创建和操作数组,以及如何对它们进行高效操作,然后展示了如何使用pandas管理大型数据集。
第12章为使用scikitlearn训练机器学习模型,scikitlearn库是一套可以在Python中执行机器学习任务的现成工具,本章同时讲解了机器学习,包含一些常见的算法和训练预测模型。
第13章为使用FastAPI创建高效的预测API端点,展示了如何使用Joblib高效地存储经过训练的机器学习模型;然后,将它集成到一个FastAPI后端,并且考虑了FastAPI内部的一些技术细节,以实现的性能;后,展示了一种使用Joblib缓存结果的方法。
前言Python FastAPI构建数据科学应用第14章为使用带FastAPI和OpenCV的WebSocket实现人脸实时检测系统,实现了一个在浏览器中执行人脸检测的简单应用程序,由FastAPI WebSocket和OpenCV支持,OpenCV是一个流行的计算机视觉库。
准备工作
在本书中,我们将主要使用Python编程语言。第1章解释如何在操作系统上设置适当的Python环境。一些例子还涉及使用JavaScript运行网页,因此您的操作系统需要安装Chrome或Mozilla Firefox浏览器。
软件需求操作系统需求Python 3.7及以上版本Windows,macOS 或者LinuxJavaScriptWindows,macOS 或者Linux
示例代码下载
本书的示例代码可以从https://github.com/PacktPublishing/BuildingDataScienceApplicationswithFastAPI下载,同时相关更新也可从本网址下载。
彩色图片下载
本书所涉及的彩色图片和表格,可从https://static.packtcdn.com/downloads/9781801079211_ColorImages.pdf下载。
|
|