有电书房店铺主页二维码
有电书房
微信扫描二维码,访问我们的微信店铺

FastAPI学习手册

¥88.20
运费: ¥ 5.00-22.00
库存: 300 件
FastAPI学习手册 商品图0
FastAPI学习手册 商品图1
FastAPI学习手册 商品图2
FastAPI学习手册 商品缩略图0 FastAPI学习手册 商品缩略图1 FastAPI学习手册 商品缩略图2

商品详情

书名:FastAPI学习手册
书号:978-7-5198-9958-5
定价:98元
作者:[美] 比尔·卢巴诺维奇(Bill Lubanovic) 著 爱飞翔 译
出版时间:2025-06-06
出版社:中国电力出版社
页码: 360    字数(千字):471
开本:16开    版次:1    印次:1


品牌介绍

中国电力出版社成立于 1951 年,作为中国成立最早的中央科技出版社之一,曾隶属于水利电力部、能源部、电力工业部、国家电力公司,现为国家电网公司所属的科技出版社,在电气技术专业出版领域享有极高的声誉。该社作为以图书出版为主体,音像、电子出版物、期刊、网络出版共同发展的大型出版企业,以强大的出版资源和高素质的专业队伍,致力于向读者提供包括电力工程、电气工程、建筑工程、电子技术、信息技术、外语、大中专教材、家教等学科门类齐全的权威出版物,也竭力为广大师生提供精品教材,是教育部和北京市教委规划教材的出版基地之一。


编辑推荐

编辑推荐 FastAPI是个年轻而稳健的框架,它设计得相当清晰,并且利用了Python语言中的一些新特性。正如其名称所示,这个框架的速度确实快,能够与采用Go语言所编写的框架相争。熟悉Python语言的开发者能够通过这本实用教程,学到如何运用FastAPI框架,以尽可能少的代码迅速开发出Web应用。 本书作者描述了FastAPI开发中的诸多细节,并通过各种示例,讲解了表单、数据库访问、图表与地图制作等高级话题。这本书能够帮助你迅速了解RESTful API、数据验证、授权,以及性能优化等技术。FastAPI与Flask及Django框架类似,用过那两种框架的读者很容易就能学会FastAPI。 专家推荐 “这本书让你轻松学会FastAPI。作者熟练地演示了这个框架的用法,让大家很容易就能理解FastAPI的一些概念。你可以将书里的实用知识,立刻运用到实际的编程中。” ——Ganesh Harke, 花旗银行(Citibank)的高级软件工程师 “这本书详细讲解了FastAPI框架及其周边产品,让读者迅速而全面地掌握如何用这套技术做Web开发。” ——William Jamir Silva, Adjust GmbH 的高级软件工程师


产品特色

用当代的Python语言开发当代的Web程序。


作者介绍

Bill Lubanovic拥有四十多年的开发经验,精通Linux系统、Web开发,以及Python语言。他最近与同事采用FastAPI重写了一套做生物医学研究的大型API。Bill是O’Reilly出版的《Linux System Administration》一书的合著者,他还撰写了O’Reilly的《Introducing Python》。


内容介绍

本书涵盖了以下内容:怎样使用FastAPI构建Web应用程序。FastAPI、Starlette与 Pydantic之间的区别及联系。让FastAPI框架与众不同的两项特性,也就是对异步函数的支持,以及数据类型的检测及验证机制。Python 3.8及后续版本所支持的新功能,尤其是类型注解机制。同步Python代码与异步Python代码之间的区别。怎样与外部的API及服务相连接。
本书适用于熟悉Python语言的开发者。


前言

前言 这是一本关于FastAPI 的实用教程,告诉大家如何使用这款当代的Web 框架,以当代的Python 语言来做开发。另外,你也可以将这本书当成一个故事,你会看到我们如何将自己所遇到的奇妙物件,变换成有用的工具。虽说“没有银色的子弹”(No silver bullet,相当于“没有灵丹妙药”),可要是真的遇到了狼人,还就是得靠它才行(提前说一下,我们后面确实会碰到狼人)。 笔者从1970 年代中期,开始编写科学应用程序。1977 年,第一次在PDP-11计算机上面,接触到了UNIX 操作系统以及C 语言,我当时感觉到,像UNIX这样的系统,以后应该会流行起来。 1980 年代与1990 年代初,互联网还没有呈现出今天的规模,但那个时候,已经有了许多很棒的免费软件与技术信息。1993 年的互联网,处在刚刚起步的阶段,那时出现了一款叫作Mosaic 的网页浏览器,我当时感觉到,像Mosaic 这样的浏览器,以后应该会流行起来。 几年后,笔者成立了一间做Web 开发的公司,当时的开发工具,就是老生常谈的那几样,也就是PHP、HTML 与Perl。过了几年,我们接到一个合约项目,直到那时,我才开始试用Python,它竟然能够如此迅速地访问、操纵并显示数据,这很令我赞叹。我只拿了两个星期的空闲时间,就把一款需要四位开发者用一年才写好的C 程序,以Python 语言重制了一遍。当时我感觉到,像Python 这样的编程语言,以后应该会流行起来。 从此以后,笔者的大多数工作,用的就是Python 语言以及针对这门语言的Web框架了,这主要是指Flask 与Django。我尤其喜欢简洁的Flask,所以在许多任务里面,都采用它来做开发。但是,我在几年前发现了一个宝藏,这是一种新的Web 框架,叫作FastAPI,它是由Sebastián Ramírez 编写的。 笔者阅读了FastAPI 的文档,其中提到的设计思路与设计理念,给我留下了深刻印象(文档写得很棒,大家可以去这里查阅:https://fastapi.tiangolo.com)。尤其是那个介绍开发历史的页面(https://oreil.ly/Ds-xM),让我体会到,他是在很谨慎地评估了与FastAPI 同类的方案之后,才决定建立这样一个新框架的。这不是一个自说自话的项目,也不是一个随便玩玩的东西,而是一套能够认真解决现实开发问题的框架。所以,当时我感觉到,像FastAPI 这样的框架,以后应该会流行起来。 我用FastAPI 做了一套生物医学方面的API,由于效果不错,因此我们在第二年组织了一个团队,把以前的核心API,用FastAPI 重写了一遍。重写之后的API 目前仍在使用,而且运作得很好。我们在那次重写之中获得的经验,大家都会在这本书里面看到,我们当时都认为,重写之后的代码比以前好,它的速度更快,bug 也更少。值得一提的是,那个团队里面的一些人,根本就没有用过Python,而且在所有的人里面,我是唯一一个用过FastAPI 的。 所以,当笔者有机会给《Introducing Python》一书写后续作品时,我向出版方O’Reilly 建议的首选话题,就是FastAPI。笔者认为,FastAPI 的影响力至少跟Flask 与Django 持平,甚至有可能更大。 刚才说过,FastAPI 网站本身,已经提供了一流的文档,而且详细讲述了与Web 开发有关的常见话题,例如数据库、认证、部署等。既然如此,为什么还要写这样的一本书呢? 这是因为,这不是一本把已经有人讲过的那些知识,给全部重讲一遍的书,那样的书太累人了。这是一本为了有用而写的书,它要帮助你迅速掌握FastAPI的主要概念,并加以运用。我会把值得大家去研究的技术指出来,还会针对日常的开发任务给出建议。 书里的每一章,都会用一个“预览”(也就是“内容提要”)来开头。然后,笔者会详细讲述这一章的话题,当然也会偶尔跑个题。最后,会用一个“回顾”(也就是“小结”)来概括全章。 虽然观点应该建立在事实之上,但老话说得好,“事实本身也是有观点的”(These are the opinions on which my facts are based)。所以,笔者在书里讲的内容,可能与每位读者的具体经历有所出入,但我还是希望这些内容,能够给大家提供足够的帮助,让你成为一位更有效率的Web 开发者。 排版约定 本书采用以下排版约定。 斜体(Italic) 表示新术语、URL、电子邮件地址、文件名和文件扩展名。 等宽字体(Constant width) 表示程序清单,在段落内表示程序元素,例如变量、函数名称、数据库、数据类型、环境变量、语句和关键字。 粗体等宽字体(Constant width bold) 表示应由用户原封不动输入的命令或其他文本。 斜体等宽字体(Constant width italic) 表示应该替换成用户提供值的文本,或者由上下文决定的值。 表示提示或建议。 表示一般性说明。 如何使用示例代码 本书的补充材料( 例如示例代码、习题等), 可以从https://github.com/madscheme/fastapi 下载。 如果有技术问题或是在使用示例代码时遇到困难,请发电子邮件至support@oreilly.com。 本书是要帮你完成工作的。一般来说,如果本书提供了示例代码,你可以把它用在你的程序或文档中。除非你使用了很大一部分代码,否则无需联系我们获得许可。比如,用本书的几个代码片段写一个程序就无需获得许可,销售或分发O’Reilly 图书的示例集则需要获得许可;引用本书中的示例代码回答问题无需获得许可,将书中大量的代码放到你的产品文档中则需要获得许可。 我们很希望但并不强制要求你在引用本书内容时加上引用说明。引用说明一般包括书名、作者、出版社和ISBN,例如:“FastAPI by Bill Lubanovic (O’Reilly).Copyright 2024 Bill Lubanovic, 978-1-098-13550-8”。 如果你觉得自己对示例代码的使用超出了上述许可范围,请通过permissions@oreilly.com 与我们联系。 O’Reilly 在线学习平台(O’Reilly Online Learning) 近40 年来,O’Reilly Media 致力于提供技术和商业培训、知识和卓越见解,来帮助众多公司取得成功。 公司独有的专家和改革创新者网络通过O’Reilly 书籍、文章以及在线学习平台,分享他们的专业知识和实践经验。O’Reilly 在线学习平台按照您的需要提供实时培训课程、深入学习渠道、交互式编程环境以及来自O’Reilly 和其他200 多家出版商的大量书籍与视频资料。更多信息,请访问网站:https://www.oreilly.com/。 联系我们 任何有关本书的意见或疑问,请按照以下地址联系出版社。 美国: O’Reilly Media, Inc. 1005 Gravenstein Highway North Sebastopol, CA 95472 中国: 北京市西城区西直门南大街2 号成铭大厦C 座807 室(100035) 奥莱利技术咨询(北京)有限公司 这本书在O’Reilly 网站上面有相应的网页,其中包含勘误表、示例代码,以及其他一些附加信息。这个页面的网址是:https://oreil.ly/FastAPI。 有勘误内容请反馈给:errata@oreilly.com.cn。 与我们的书籍和课程有关的新闻及信息,参见https://oreilly.com 网站。 我们的LinkedIn:https://linkedin.com/company/oreilly-media。 我们的Twitter:https://twitter.com/oreillymedia。 我们的YouTube:https://youtube.com/oreillymedia。 致谢 笔者要感谢自己在许多地方遇到的许多位朋友,是你们让我获益良多: • Serra High School(Serra 中学) • The University of Pittsburgh(匹兹堡大学) • The Chronobiology Laboratories, University of Minnesota(明尼苏达大学时间生物学实验室) • Intran • Crosfield-Dicomed • Northwest Airlines(西北航空) • Tela • WAM!NET • Mad Scheme • SSESCO 公司 • Intradyn 公司 • Keep • Thomson Reuters(汤森路透) • Cray 公司 • Penguin Computing 公司 • Internet Archive(互联网档案馆) • CrowdStrike 公司 • Flywheel


目录

目录
前言 1
第一部分 新知识介绍
第1 章 当代的Web 11
11 预览 11
12 服务与API 12
121 API 的类型 12
122 HTTP 14
123 REST(RESTful) 14
124 JSON 与API 数据格式17
125 JSON:API 17
126 GraphQL 17
13 并发 18
14 分层 19
15 数据 25
16 小结 25
第2 章 当代的Python 27
21 预览 27
22 工具 27
23 Python 入门 28
231 Python 语言本身 29
232 Python 语言的软件包管理机制 30
233 虚拟环境 30
234 Poetry 31
235 源代码的格式 32
236 测试 32
237 源代码控制与持续集成 33
238 Web 开发工具 33
24 API 与服务 34
25 变量只不过是个名字 34
26 类型提示36
27 数据结构37
28 Web 框架 37
281 Django 37
282 Flask 38
283 FastAPI38
29 小结 39
第二部分 FastAPI 导览
第3 章 FastAPI 简介 43
31 预览 43
32 什么是FastAPI 43
33 FastAPI 应用程序 44
34 处理HTTP 请求 50
341 通过URL 路径传递参数 51
342 通过查询字符串传递参数 53
343 通过请求体传递参数55
344 通过Header 传递参数 57
345 通过多种方式获取HTTP 请求之中的数据 59
346 用哪一种方式获取数据最好 59
35 给出HTTP 响应 59
351 状态码 60
352 Header 61
353 HTTP 响应的类型 61
354 类型转换 62
355 通过response_model 返回另一种数据模型 63
36 自动化的文档 66
37 如何处理更为复杂的数据 69
38 小结 69
第4 章 异步、并发与Starlette 简介 71
41 预览 71
42 Starlette 71
43 并发的类型 72
431 分布式计算与并行计算 73
432 操作系统级别的进程73
433 操作系统级别的线程74
434 绿色线程 74
435 回调 75
436 Python 生成器 75
437 Python 的async、await 关键字与asyncio 库 77
44 FastAPI 与异步开发 79
45 直接使用Starlette 做Web 开发 82
46 插曲:清理Clue House 83
47 小结 85
第5 章 Pydantic、类型提示与数据模型简介 87
51 预览 87
52 类型提示87
53 给数据归组 91
54 其他一些数据归组方案 97
55 一个简单的示例 99
56 对类型做验证 103
57 对取值做出验证 104
58 小结 107
第6 章 描述依赖关系 109
61 预览 109
62 什么是依赖 109
63 由依赖导致的问题 110
64 依赖注入 111
65 FastAPI 的依赖注入 111
66 在FastAPI 代码里面描述依赖关系 112
67 依赖关系的作用范围 113
671 为单个的路径函数指定依赖关系 113
672 为多条路径指定同一种依赖关系 115
673 为整个应用程序指定依赖关系 116
68 小结 116
第7 章 各种Web 框架之间的对比 117
71 预览 117
72 Flask 与FastAPI 的异同 118
721 处理URL 之中的参数 118
722 处理查询字符串之中的参数 120
723 处理请求体之中的参数 120
724 处理标头之中的参数121
73 Django 框架与Flask 及FastAPI 的异同 122
74 这三种Web 开发框架在其他方面的特性对比 123
75 这三个框架在数据库方面的异同 124
76 如何在这三种框架之间选择 125
77 其他一些Python Web 框架 125
78 小结 126
第三部分 制作网站
第8 章 Web 层 129
81 预览 129
82 插曲:从上到下、从下到上,还是从内到外 130
83 REST 式的设计 132
84 网站的文件与目录布局 134
85 网站的第一版代码 137
86 处理HTTP 请求 140
87 在顶级app 下面添加多个次一级的subrouter 142
88 构建Web 层 143
89 定义数据模型 143
810 Stub Data 与Fake Data 144
811 先确定一些常见的操作 144
812 建立Fake Data 145
813 开始测试 151
814 利用FastAPI 自动生成的测试表单作测试 152
815 Web 层应该通过Service 层做中介,而不应直接与Data 层通信 155
816 分页与排序 156
817 小结 158
第9 章 Service 层 159
91 预览 159
92 如何确定网站所应提供的服务 159
93 网站的文件布局 160
94 确保网站安全 161
95 实现Service 层中的各种函数161
96 测试 163
97 Service 层的其他事务 165
971 日志记录 166
972 指标测量、监控、可观测性 166
973 追踪 167
974 杂项 167
98 小结 168
第10 章 Data 层 169
101 预览 169
102 DBAPI 169
103 SQLite 172
104 网站的文件布局 174
105 让网站运作起来 175
106 测试 181
1061 全面测试 182
1062 单元测试 193
107 小结 196
第11 章 认证与授权 197
111 预览 197
112 又得跑个题:我们真的需要做认证吗 198
113 认证方式 199
114 全局认证:让所有人共用密语 200
115 对每一位访问者分别做认证 204
116 采用新式技术给每一位访问者分别做认证 205
1161 OAuth2 206
1162 表示用户的User 模型 208
1163 实现Data 层中与User 有关的操作 208
1164 实现一套与Data 层中的User 操作类似的Fake 操作 210
1165 实现Service 层中与User 有关的操作 212
1166 实现Web 层中与User 有关的操作 214
1167 测试 216
1168 修改顶层的主程序 216
1169 回顾早前实现的认证步骤 217
11610 JWT 218
11611 经由OIDC 协议,通过第三方账号做认证219
117 授权 220
118 中间件 222
1181 CORS(跨域资源共享) 222
1182 通过第三方包实现认证与授权 224
119 小结 225
第12 章 测试 227
121 预览 227
122 对Web API 做测试 227
123 对哪里的代码做测试 228
124 如何做测试 229
125 Pytest 230
126 网站的文件布局 231
127 自动化的单元测试 232
1271 Mocking 232
1272 Test Double 与Fake 237
1273 对Web 层做测试 239
1274 对Service 层做测试 242
1275 对Data 层做测试 244
128 自动化的集成测试 246
129 Repository 模式 248
1210 自动化的全面测试 248
1211 安全测试 251
1212 负载测试 252
1213 小结 253
第13 章 将网站部署到生产环境之中 255
131 预览 255
132 部署网站 255
1321 采用多个Worker 来运行服务器 256
1322 HTTPS 257
1323 Docker 257
1324 云服务 258
1325 Kubernetes 259
133 改善网站的性能 259
1331 Async 260
1332 缓存 260
1333 数据库、文件、内存 260
1334 队列 261
1335 Python 本身 261
134 疑难排解 262
1341 确定这是哪一类问题 262
1342 查看日志 263
1343 收集指标 263
135 小结 264
第四部分 漫谈
第14 章 数据库、数据科学以及一点点AI 267
141 预览 267
142 数据存储方案 268
143 关系型数据库及SQL 269
1431 SQLAlchemy 269
1432 SQLModel 272
1433 SQLite 272
1434 PostgreSQL 273
1435 EdgeDB 273
144 非关系型数据库(NoSQL 数据库) 274
1441 Redis 275
1442 MongoDB 275
1443 Cassandra 275
1444 Elasticsearch 275
145 SQL 数据库中的NoSQL 特性 275
146 数据库负载测试 277
147 数据科学与人工智能(AI) 279
148 小结 282
第15 章 文件 283
151 预览 283
152 如何支持分块传输 283
153 上传文件 283
1531 通过File() 实现文件上传 284
1532 通过UploadFile 实现文件上传 285
154 下载文件 287
1541 FileResponse 287
1542 StreamingResponse 288
155 提供静态文件服务 289
156 小结 291
第16 章 表单与模板 293
161 预览 293
162 表单 293
163 模板 296
164 小结 300
第17 章 数据发现与数据可视化 301
171 预览 301
172 Python 与数据处理 301
173 读取并输出PSV 格式的文本数据 302
1731 用csv 包读取PSV 文件 303
1732 用pythontabulate 包读取PSV 文件 304
1733 用pandas 读取PSV 文件并输出其内容 305
174 读取SQLite 数据库中的数据并以网页的形式显示 306
1741 与图表显示有关的软件包 307
1742 图表示例1:试用Plotly 308
1743 图表示例2:绘制直方图 311
1744 与地图显示有关的软件包 312
1745 地图示例 314
175 小结 315
第18 章 游戏 317
181 预览 317
182 与游戏制作有关的Python 包 317
183 拆分游戏逻辑 318
184 游戏的设计 319
185 Web 层的第一部分工作:实现游戏的初始化 320
186 Web 层的第二部分工作:实现游戏的后续步骤 322
187 Service 层的第一部分工作:实现游戏的初始化 324
188 Service 层的第二部分工作:判断玩家猜测得是否正确325
189 测试 326
1810 Data 层的工作:实现游戏的初始化 327
1811 开始玩这个猜单词游戏 327
1812 小结 329
附录A 延伸阅读 331
附录B 用作示例数据的神秘生物及探索者 335


有电书房店铺主页二维码
有电书房
扫描二维码,访问我们的微信店铺

FastAPI学习手册

手机启动微信
扫一扫购买

收藏到微信 or 发给朋友

1. 打开微信,扫一扫左侧二维码

2. 点击右上角图标

点击右上角分享图标

3. 发送给朋友、分享到朋友圈、收藏

发送给朋友、分享到朋友圈、收藏

微信支付

支付宝

扫一扫购买

收藏到微信 or 发给朋友

1. 打开微信,扫一扫左侧二维码

2. 点击右上角图标

点击右上角分享图标

3. 发送给朋友、分享到朋友圈、收藏

发送给朋友、分享到朋友圈、收藏