登入帳戶  | 訂單查詢  | 購物車/收銀台(0) | 在線留言板  | 付款方式  | 運費計算  | 聯絡我們  | 幫助中心 |  加入書簽
會員登入   新用戶登記
HOME新書上架暢銷書架好書推介特價區會員書架精選月讀2024年度TOP分類瀏覽雜誌 臺灣用戶
品種:超過100萬種各類書籍/音像和精品,正品正價,放心網購,悭钱省心 服務:香港台灣澳門海外 送貨:速遞郵局服務站

新書上架簡體書 繁體書
暢銷書架簡體書 繁體書
好書推介簡體書 繁體書

六月出版:大陸書 台灣書
五月出版:大陸書 台灣書
四月出版:大陸書 台灣書
三月出版:大陸書 台灣書
二月出版:大陸書 台灣書
一月出版:大陸書 台灣書
12月出版:大陸書 台灣書
11月出版:大陸書 台灣書
十月出版:大陸書 台灣書
九月出版:大陸書 台灣書
八月出版:大陸書 台灣書
七月出版:大陸書 台灣書
六月出版:大陸書 台灣書
五月出版:大陸書 台灣書
四月出版:大陸書 台灣書

『簡體書』FastAPI学习手册

書城自編碼: 4124368
分類:簡體書→大陸圖書→計算機/網絡程序設計
作者: [美]比尔·卢巴诺维奇[Bill Lubanovic]著 爱
國際書號(ISBN): 9787519899585
出版社: 中国电力出版社
出版日期: 2025-06-01

頁數/字數: /
書度/開本: 16开 釘裝: 平装

售價:HK$ 107.8

我要買

share:

** 我創建的書架 **
未登入.



新書推薦:
莫雷诺心理学:慢性焦虑(西班牙临床心理学家经典入门指南,焦虑症与恐惧症治愈手册。冲破情绪困局,揭示焦虑本质)
《 莫雷诺心理学:慢性焦虑(西班牙临床心理学家经典入门指南,焦虑症与恐惧症治愈手册。冲破情绪困局,揭示焦虑本质) 》

售價:HK$ 54.8
莫雷诺心理学:克服强迫症(第5版,西班牙临床心理学家经典入门指南,强迫症的诱因、病症与治疗,收录强迫症自测表)
《 莫雷诺心理学:克服强迫症(第5版,西班牙临床心理学家经典入门指南,强迫症的诱因、病症与治疗,收录强迫症自测表) 》

售價:HK$ 54.8
杰出投资者的情绪管理课:揭秘巴菲特不住在华尔街的真相(德国年度财经图书奖)
《 杰出投资者的情绪管理课:揭秘巴菲特不住在华尔街的真相(德国年度财经图书奖) 》

售價:HK$ 87.8
粤港澳大湾区协同发展报告(2024)
《 粤港澳大湾区协同发展报告(2024) 》

售價:HK$ 178.2
中国美术全集:陶瓷器(一部汇集中华五千年文化的大型图集)
《 中国美术全集:陶瓷器(一部汇集中华五千年文化的大型图集) 》

售價:HK$ 1680.0
科技革命与日本现代化
《 科技革命与日本现代化 》

售價:HK$ 174.6
天气好极了,钱几乎没有: 契诃夫书信集 1876—1904
《 天气好极了,钱几乎没有: 契诃夫书信集 1876—1904 》

售價:HK$ 92.2
天才基本法
《 天才基本法 》

售價:HK$ 62.3

編輯推薦:
编辑推荐
FastAPI是个年轻而稳健的框架,它设计得相当清晰,并且利用了Python语言中的一些新性。正如其名称所示,这个框架的速度确实快,能够与采用Go语言所编写的框架相争。熟悉Python语言的开发者能够通过这本实用教程,学到如何运用FastAPI框架,以尽可能少的代码迅速开发出Web应用。
本书作者描述了FastAPI开发中的诸多细节,并通过各种示例,讲解了表单、数据库访问、图表与地图制作等高级话题。这本书能够帮助你迅速了解RESTful API、数据验证、授权,以及性能优化等技术。FastAPI与Flask及Django框架类似,用过那两种框架的读者很容易就能学会FastAPI。
专家推荐
“这本书让你轻松学会FastAPI。作者熟练地演示了这个框架的用法,让家很容易就能理解FastAPI的一些概念。你可以将书里的实用知识,立刻运用到实际的编程中。”
——Ganesh Harke,
花旗银行(Citibank)的高级软件工程师
“这本书详细讲解了FastAPI框架及其周边产品,让读者迅速而全面地掌握如何用这套技术做Web开发。”
——William Jamir
內容簡介:
本书涵盖了以下内容:怎样使用FastAPI构建Web应用程序。FastAPI、Starlette与 Pydantic之间的区别及联系。让FastAPI框架与众不同的两项性,也就是对异步函数的支持,以及数据类型的检测及验证机制。Python 3.8及后续版本所支持的新功能,尤其是类型注解机制。同步Python代码与异步Python代码之间的区别。怎样与外部的API及服务相连接。
關於作者:
Bill Lubanovic拥有四十多年的开发经验,精通Linux系统、Web开发,以及Python语言。他最Z近与同事采用FastAPI重写了一套做生物医学研究的型API。Bill是O’Reilly出版的《Linux System Administration》一书的合著者,他还撰写了O’Reilly的《Introducing Python》。
目錄
目录
前言 1
第一部分 新知识介绍
第1 章 当代的Web . 11
1.1 预览 . 11
1.2 服务与API 12
1.2.1 API 的类型 .12
1.2.2 HTTP .14
1.2.3 REST(RESTful) .14
1.2.4 JSON 与API 数据格式.17
1.2.5 JSON:API 17
1.2.6 GraphQL 17
1.3 并发 .18
1.4 分层 .19
1.5 数据 .25
1.6 小结 .25
第2 章 当代的Python 27
2.1 预览 .27
2.2 工具 .27
2.3 Python 入门 .28
2.3.1 Python 语言本身 .29
2.3.2 Python 语言的软件包管理机制 30
2.3.3 虚拟环境 .30
2.3.4 Poetry 31
2.3.5 源代码的格式 32
2.3.6 测试 32
2.3.7 源代码控制与持续集成 33
2.3.8 Web 开发工具 33
2.4 API 与服务 34
2.5 变量只不过是个名字 34
2.6 类型提示36
2.7 数据结构37
2.8 Web 框架 37
2.8.1 Django 37
2.8.2 Flask 38
2.8.3 FastAPI.38
2.9 小结 .39
第二部分 FastAPI 导览
第3 章 FastAPI 简介 43
3.1 预览 .43
3.2 什么是FastAPI 43
3.3 FastAPI 应用程序 .44
3.4 处理HTTP 请求 50
3.4.1 通过URL 路径传递参数 .51
3.4.2 通过查询字符串传递参数 53
3.4.3 通过请求体传递参数.55
3.4.4 通过Header 传递参数 57
3.4.5 通过多种方式获取HTTP 请求之中的数据 59
3.4.6 用哪一种方式获取数据最好 .59
3.5 给出HTTP 响应 59
3.5.1 状态码 60
3.5.2 Header 61
3.5.3 HTTP 响应的类型 61
3.5.4 类型转换 .62
3.5.5 通过response_model 返回另一种数据模型 63
3.6 自动化的文档 .66
3.7 如何处理更为复杂的数据 69
3.8 小结 .69
第4 章 异步、并发与Starlette 简介 .71
4.1 预览 .71
4.2 Starlette .71
4.3 并发的类型 72
4.3.1 分布式计算与并行计算 73
4.3.2 操作系统级别的进程.73
4.3.3 操作系统级别的线程.74
4.3.4 绿色线程 .74
4.3.5 回调 75
4.3.6 Python 生成器 75
4.3.7 Python 的async、await 关键字与asyncio 库 77
4.4 FastAPI 与异步开发 79
4.5 直接使用Starlette 做Web 开发 .82
4.6 插曲:清理Clue House .83
4.7 小结 .85
第5 章 Pydantic、类型提示与数据模型简介 . 87
5.1 预览 .87
5.2 类型提示87
5.3 给数据归组 91
5.4 其他一些数据归组方案 .97
5.5 一个简单的示例 99
5.6 对类型做验证 103
5.7 对取值做出验证 .104
5.8 小结 107
第6 章 描述依赖关系 109
6.1 预览 109
6.2 什么是依赖 .109
6.3 由依赖导致的问题 . 110
6.4 依赖注入. 111
6.5 FastAPI 的依赖注入 . 111
6.6 在FastAPI 代码里面描述依赖关系 112
6.7 依赖关系的作用范围 113
6.7.1 为单个的路径函数指定依赖关系 . 113
6.7.2 为多条路径指定同一种依赖关系 . 115
6.7.3 为整个应用程序指定依赖关系 116
6.8 小结 116
第7 章 各种Web 框架之间的对比 117
7.1 预览 117
7.2 Flask 与FastAPI 的异同 . 118
7.2.1 处理URL 之中的参数 118
7.2.2 处理查询字符串之中的参数 120
7.2.3 处理请求体之中的参数 .120
7.2.4 处理标头之中的参数121
7.3 Django 框架与Flask 及FastAPI 的异同 .122
7.4 这三种Web 开发框架在其他方面的性对比 123
7.5 这三个框架在数据库方面的异同 124
7.6 如何在这三种框架之间选择 .125
7.7 其他一些Python Web 框架 125
7.8 小结 126
第三部分 制作网站
第8 章 Web 层 129
8.1 预览 129
8.2 插曲:从上到下、从下到上,还是从内到外 130
8.3 REST 式的设计 132
8.4 网站的文件与目录布局 134
8.5 网站的第一版代码 .137
8.6 处理HTTP 请求 .140
8.7 在顶级app 下面添加多个次一级的subrouter .142
8.8 构建Web 层 143
8.9 定义数据模型 143
8.10 Stub Data 与Fake Data .144
8.11 先确定一些常见的操作 144
8.12 建立Fake Data .145
8.13 开始测试 151
8.14 利用FastAPI 自动生成的测试表单作测试 .152
8.15 Web 层应该通过Service 层做中介,而不应直接与Data 层通信 155
8.16 分页与排序 .156
8.17 小结 158
第9 章 Service 层 . 159
9.1 预览 159
9.2 如何确定网站所应提供的服务 159
9.3 网站的文件布局 .160
9.4 确保网站安全 161
9.5 实现Service 层中的各种函数161
9.6 测试 163
9.7 Service 层的其他事务 165
9.7.1 日志记录 166
9.7.2 指标测量、监控、可观测性 166
9.7.3 追踪 .167
9.7.4 杂项 .167
9.8 小结 168
第10 章 Data 层 . 169
10.1 预览 169
10.2 DB-API .169
10.3 SQLite 172
10.4 网站的文件布局 174
10.5 让网站运作起来 175
10.6 测试 181
10.6.1 全面测试 182
10.6.2 单元测试 193
10.7 小结 196
第11 章 认证与授权 197
11.1 预览 197
11.2 又得跑个题:我们真的需要做认证吗 198
11.3 认证方式 199
11.4 全局认证:让所有人共用密语 .200
11.5 对每一位访问者分别做认证 204
11.6 采用新式技术给每一位访问者分别做认证 .205
11.6.1 OAuth2 206
11.6.2 表示用户的User 模型 .208
11.6.3 实现Data 层中与User 有关的操作 208
11.6.4 实现一套与Data 层中的User 操作类似的Fake 操作 .210
11.6.5 实现Service 层中与User 有关的操作 .212
11.6.6 实现Web 层中与User 有关的操作 214
11.6.7 测试 216
11.6.8 修改顶层的主程序 216
11.6.9 回顾早前实现的认证步骤 .217
11.6.10 JWT 218
11.6.11 经由OIDC 协议,通过第三方账号做认证.219
11.7 授权 220
11.8 中间件 222
11.8.1 CORS(跨域资源共享) 222
11.8.2 通过第三方包实现认证与授权 224
11.9 小结 225
第12 章 测试 227
12.1 预览 227
12.2 对Web API 做测试 .227
12.3 对哪里的代码做测试 .228
12.4 如何做测试 .229
12.5 Pytest .230
12.6 网站的文件布局 231
12.7 自动化的单元测试 232
12.7.1 Mocking .232
12.7.2 Test Double 与Fake 237
12.7.3 对Web 层做测试 239
12.7.4 对Service 层做测试 .242
12.7.5 对Data 层做测试 244
12.8 自动化的集成测试 246
12.9 Repository 模式 248
12.10 自动化的全面测试 248
12.11 安全测试 251
12.12 负载测试 252
12.13 小结 .253
第13 章 将网站部署到生产环境之中 255
13.1 预览 255
13.2 部署网站 255
13.2.1 采用多个Worker 来运行服务器 .256
13.2.2 HTTPS .257
13.2.3 Docker .257
13.2.4 云服务 .258
13.2.5 Kubernetes .259
13.3 改善网站的性能 259
13.3.1 Async 260
13.3.2 缓存 260
13.3.3 数据库、文件、内存 260
13.3.4 队列 261
13.3.5 Python 本身 261
13.4 疑难排解 262
13.4.1 确定这是哪一类问题 262
13.4.2 查看日志 263
13.4.3 收集指标 263
13.5 小结 264
第四部分 漫谈
第14 章 数据库、数据科学以及一点点AI 267
14.1 预览 267
14.2 数据存储方案 268
14.3 关系型数据库及SQL 269
14.3.1 SQLAlchemy 269
14.3.2 SQLModel .272
14.3.3 SQLite .272
14.3.4 PostgreSQL 273
14.3.5 EdgeDB 273
14.4 非关系型数据库(NoSQL 数据库) .274
14.4.1 Redis 275
14.4.2 MongoDB 275
14.4.3 Cassandra 275
14.4.4 Elasticsearch .275
14.5 SQL 数据库中的NoSQL 性 275
14.6 数据库负载测试 277
14.7 数据科学与人工智能(AI) .279
14.8 小结 282
第15 章 文件 283
15.1 预览 283
15.2 如何支持分块传输 283
15.3 上传文件 283
15.3.1 通过File() 实现文件上传 284
15.3.2 通过UploadFile 实现文件上传 285
15.4 下载文件 287
15.4.1 FileResponse 287
15.4.2 StreamingResponse 288
15.5 提供静态文件服务 289
15.6 小结 291
第16 章 表单与模板 . 293
16.1 预览 293
16.2 表单 293
16.3 模板 296
16.4 小结 300
第17 章 数据发现与数据可视化 301
17.1 预览 301
17.2 Python 与数据处理 .301
17.3 读取并输出PSV 格式的文本数据 302
17.3.1 用csv 包读取PSV 文件 .303
17.3.2 用python-tabulate 包读取PSV 文件 304
17.3.3 用pandas 读取PSV 文件并输出其内容 .305
17.4 读取SQLite 数据库中的数据并以网页的形式显示 306
17.4.1 与图表显示有关的软件包 .307
17.4.2 图表示例1:试用Plotly 308
17.4.3 图表示例2:绘制直方图 311
17.4.4 与地图显示有关的软件包 .312
17.4.5 地图示例 314
17.5 小结 315
第18 章 游戏 317
18.1 预览 317
18.2 与游戏制作有关的Python 包 317
18.3 拆分游戏逻辑 318
18.4 游戏的设计 .319
18.5 Web 层的第一部分工作:实现游戏的初始化 320
18.6 Web 层的第二部分工作:实现游戏的后续步骤 322
18.7 Service 层的第一部分工作:实现游戏的初始化 324
18.8 Service 层的第二部分工作:判断玩家猜测得是否正确325
18.9 测试 326
18.10 Data 层的工作:实现游戏的初始化 327
18.11 开始玩这个猜单词游戏 .327
18.12 小结 .329
附录A 延伸阅读 . 331
附录B 用作示例数据的神秘生物及探索者 335
內容試閱
前言这是一本关于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 NorthSebastopol, 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

 

 

書城介紹  | 合作申請 | 索要書目  | 新手入門 | 聯絡方式  | 幫助中心 | 找書說明  | 送貨方式 | 付款方式 香港用户  | 台灣用户 | 海外用户
megBook.com.hk
Copyright © 2013 - 2025 (香港)大書城有限公司  All Rights Reserved.