注冊(cè) | 登錄讀書好,好讀書,讀好書!
讀書網(wǎng)-DuShu.com
當(dāng)前位置: 首頁(yè)出版圖書科學(xué)技術(shù)計(jì)算機(jī)/網(wǎng)絡(luò)軟件與程序設(shè)計(jì)其他編程語(yǔ)言/工具利用FastAPI構(gòu)建Python微服務(wù)

利用FastAPI構(gòu)建Python微服務(wù)

利用FastAPI構(gòu)建Python微服務(wù)

定 價(jià):¥129.00

作 者: [美]舍溫·約翰·C.特拉古拉 著,王婷 譯
出版社: 清華大學(xué)出版社
叢編項(xiàng):
標(biāo) 簽: 暫缺

購(gòu)買這本書可以去


ISBN: 9787302644866 出版時(shí)間: 2023-09-01 包裝: 平裝-膠訂
開本: 16開 頁(yè)數(shù): 字?jǐn)?shù):  

內(nèi)容簡(jiǎn)介

  《利用FastAPI構(gòu)建Python微服務(wù)》詳細(xì)闡述了與分布式機(jī)器學(xué)習(xí)相關(guān)的基本解決方案,主要包括設(shè)置 FastAPI,探索核心功能,依賴注入研究,構(gòu)建微服務(wù)應(yīng)用程序,連接到關(guān)系數(shù)據(jù)庫(kù),使用非關(guān)系數(shù)據(jù)庫(kù),保護(hù)REST API的安全,創(chuàng)建協(xié)程、事件和消息驅(qū)動(dòng)的事務(wù),利用其他高級(jí)功能,解決數(shù)值、符號(hào)和圖形問(wèn)題,添加其他微服務(wù)功能等內(nèi)容。此外,本書還提供了相應(yīng)的示例、代碼,以幫助讀者進(jìn)一步理解相關(guān)方案的實(shí)現(xiàn)過(guò)程。

作者簡(jiǎn)介

  舍溫·約翰·C.特拉古拉是Java、ASP.NET MVC和Python應(yīng)用程序方面的主題專家,并且還具有一些前端框架背景。他管理著一個(gè)開發(fā)團(tuán)隊(duì)來(lái)構(gòu)建與制造和固定資產(chǎn)、文檔管理、記錄管理、POS以及庫(kù)存系統(tǒng)相關(guān)的各種應(yīng)用程序。作為顧問(wèn),他擁有構(gòu)建實(shí)驗(yàn)室信息管理系統(tǒng)(laboratory information management system,LIMS)和混合移動(dòng)應(yīng)用程序的背景。自2010年以來(lái),他還為Python、Django、Flask、Jakarta EE、C#、ASP.NET MVC、JSF、Java和一些前端框架的課程提供企業(yè)新人培訓(xùn)服務(wù)。他撰寫了Spring MVC Blueprints和Spring 5 Cookbook之類的書籍,另外還發(fā)布了Packt視頻Modern Java Web Applications with Spring Boot 2.x。

圖書目錄

第1篇  與FastAPI微服務(wù)開發(fā)應(yīng)用相關(guān)的架構(gòu)概念
第1章  設(shè)置FastAPI 3
1.1  技術(shù)要求 3
1.2  設(shè)置開發(fā)環(huán)境 4
1.3  初始化和配置FastAPI 5
1.4  設(shè)計(jì)和實(shí)現(xiàn)REST API 6
1.5  管理用戶請(qǐng)求和服務(wù)器響應(yīng) 9
1.5.1  參數(shù)類型聲明 9
1.5.2  路徑參數(shù) 10
1.5.3  查詢參數(shù) 12
1.5.4  默認(rèn)參數(shù) 13
1.5.5  可選參數(shù) 14
1.5.6  混合所有類型的參數(shù) 16
1.5.7  請(qǐng)求正文 16
1.5.8  請(qǐng)求標(biāo)頭 19
1.5.9  響應(yīng)數(shù)據(jù) 20
1.6  處理表單參數(shù) 21
1.7  管理cookie 22
1.8  小結(jié) 23
第2章  探索核心功能 25
2.1  技術(shù)要求 25
2.2  構(gòu)建和組織大型項(xiàng)目 26
2.2.1  實(shí)現(xiàn)API服務(wù) 27
2.2.2  導(dǎo)入模塊組件 28
2.2.3  實(shí)現(xiàn)新的main.py文件 29
2.3  管理與API相關(guān)的異常 30
2.3.1  單個(gè)狀態(tài)代碼響應(yīng) 30
2.3.2  多個(gè)狀態(tài)代碼 32
2.3.3  引發(fā)HTTPException 33
2.3.4  自定義異常 34
2.3.5  默認(rèn)處理程序覆蓋 36
2.4  將對(duì)象轉(zhuǎn)換為與JSON兼容的類型 37
2.5  管理API響應(yīng) 38
2.6  創(chuàng)建后臺(tái)進(jìn)程 40
2.7  使用異步路徑操作 42
2.8  應(yīng)用中間件以過(guò)濾路徑操作 43
2.9  小結(jié) 45
第3章  依賴注入研究 47
3.1  技術(shù)要求 47
3.2  應(yīng)用控制反轉(zhuǎn)和依賴注入 48
3.2.1  注入依賴函數(shù) 49
3.2.2  注入可調(diào)用的類 50
3.2.3  構(gòu)建嵌套依賴關(guān)系 51
3.2.4  緩存依賴項(xiàng) 53
3.2.5  聲明Depends()參數(shù)類型 54
3.2.6  注入異步依賴項(xiàng) 55
3.3  探索注入依賴項(xiàng)的方法 55
3.3.1  在服務(wù)參數(shù)列表上發(fā)生的依賴注入 55
3.3.2  在路徑運(yùn)算符中發(fā)生的依賴注入 56
3.3.3  針對(duì)路由器的依賴注入 57
3.3.4  針對(duì)main.py的依賴注入 60
3.4  基于依賴關(guān)系組織項(xiàng)目 61
3.4.1  模型層 62
3.4.2  存儲(chǔ)庫(kù)層 63
3.4.3  存儲(chǔ)庫(kù)工廠方法 65
3.4.4  服務(wù)層 65
3.4.5  REST API和服務(wù)層 66
3.4.6  實(shí)際項(xiàng)目結(jié)構(gòu) 67
3.5  使用第三方容器 67
3.5.1  使用可配置容器—Dependency Injector 68
3.5.2  使用Lagom模塊 72
3.5.3  FastAPI和Lagom集成 72
3.6  可依賴項(xiàng)的范圍 73
3.7  小結(jié) 74
第4章  構(gòu)建微服務(wù)應(yīng)用程序 75
4.1  技術(shù)要求 75
4.2  應(yīng)用分解模式 76
4.2.1  按業(yè)務(wù)單元分解 76
4.2.2  創(chuàng)建子應(yīng)用程序 78
4.3  掛載子模塊 79
4.4  創(chuàng)建通用網(wǎng)關(guān) 80
4.5  實(shí)現(xiàn)主端點(diǎn) 80
4.6  評(píng)估微服務(wù)ID 81
4.7  應(yīng)用異常處理程序 82
4.8  集中日志記錄機(jī)制 83
4.8.1  微服務(wù)架構(gòu)可能面臨的日志問(wèn)題 83
4.8.2  使用Loguru模塊 84
4.9  構(gòu)建日志中間件 85
4.9.1  中間件實(shí)現(xiàn)示例 86
4.9.2  使用REST API服務(wù) 88
4.10  使用httpx模塊 88
4.11  使用requests模塊 90
4.12  應(yīng)用領(lǐng)域建模方法 91
4.13  創(chuàng)建層 92
4.14  識(shí)別領(lǐng)域模型 92
4.15  構(gòu)建存儲(chǔ)庫(kù)層和服務(wù)層 94
4.15.1  存儲(chǔ)庫(kù)層模式 94
4.15.2  服務(wù)層模式 96
4.15.3  使用工廠方法模式 97
4.16  管理微服務(wù)的配置細(xì)節(jié) 97
4.16.1  將設(shè)置存儲(chǔ)為類屬性 98
4.16.2  在屬性文件中存儲(chǔ)設(shè)置 99
4.17  小結(jié) 101
第2篇  以數(shù)據(jù)為中心的微服務(wù)和專注于通信的微服務(wù)
第5章  連接到關(guān)系數(shù)據(jù)庫(kù) 105
5.1  技術(shù)要求 106
5.2  準(zhǔn)備數(shù)據(jù)庫(kù)連接 106
5.3  使用SQLAlchemy創(chuàng)建同步CRUD事務(wù) 107
5.3.1  安裝數(shù)據(jù)庫(kù)驅(qū)動(dòng)程序 108
5.3.2  設(shè)置數(shù)據(jù)庫(kù)連接 108
5.3.3  初始化會(huì)話工廠 109
5.3.4  定義Base類 109
5.3.5  構(gòu)建模型層 110
5.3.6  映射表關(guān)系 111
5.3.7  實(shí)現(xiàn)存儲(chǔ)庫(kù)層 113
5.3.8  建立CRUD事務(wù) 113
5.3.9  創(chuàng)建連接查詢 116
5.3.10  運(yùn)行事務(wù) 117
5.3.11  創(chuàng)建表 119
5.4  使用SQLAlchemy實(shí)現(xiàn)異步CRUD事務(wù) 120
5.4.1  安裝兼容asyncio的數(shù)據(jù)庫(kù)驅(qū)動(dòng)程序 120
5.4.2  設(shè)置數(shù)據(jù)庫(kù)的連接 121
5.4.3  創(chuàng)建會(huì)話工廠 121
5.4.4  創(chuàng)建Base類和模型層 122
5.4.5  構(gòu)建存儲(chǔ)庫(kù)層 122
5.4.6  運(yùn)行CRUD事務(wù) 125
5.5  使用GINO實(shí)現(xiàn)異步CRUD事務(wù) 126
5.5.1  安裝數(shù)據(jù)庫(kù)驅(qū)動(dòng)程序 127
5.5.2  建立數(shù)據(jù)庫(kù)連接 127
5.5.3  構(gòu)建模型層 127
5.5.4  映射表關(guān)系 128
5.5.5  實(shí)現(xiàn)CRUD事務(wù) 130
5.5.6  運(yùn)行CRUD事務(wù) 133
5.5.7  創(chuàng)建表 134
5.6  將Pony ORM用于存儲(chǔ)庫(kù)層 135
5.6.1  安裝數(shù)據(jù)庫(kù)驅(qū)動(dòng)程序 135
5.6.2  創(chuàng)建數(shù)據(jù)庫(kù)連接 135
5.6.3  定義模型類 135
5.6.4  實(shí)現(xiàn)CRUD事務(wù) 138
5.6.5  運(yùn)行存儲(chǔ)庫(kù)事務(wù) 141
5.6.6  創(chuàng)建表 142
5.7  使用Peewee構(gòu)建存儲(chǔ)庫(kù) 142
5.7.1  安裝數(shù)據(jù)庫(kù)驅(qū)動(dòng)程序 142
5.7.2  創(chuàng)建數(shù)據(jù)庫(kù)連接 142
5.7.3  創(chuàng)建表和領(lǐng)域?qū)?143
5.7.4  實(shí)現(xiàn)CRUD事務(wù) 146
5.7.5  運(yùn)行CRUD事務(wù) 148
5.8  應(yīng)用CQRS設(shè)計(jì)模式 148
5.8.1  定義處理程序接口 149
5.8.2  創(chuàng)建命令和查詢類 149
5.8.3  創(chuàng)建命令和查詢處理程序 150
5.8.4  訪問(wèn)處理程序 151
5.9  小結(jié) 152
第6章  使用非關(guān)系數(shù)據(jù)庫(kù) 155
6.1  技術(shù)要求 156
6.2  設(shè)置數(shù)據(jù)庫(kù)環(huán)境 156
6.3  應(yīng)用PyMongo驅(qū)動(dòng)程序進(jìn)行同步連接 158
6.3.1  設(shè)置數(shù)據(jù)庫(kù)連接 159
6.3.2  構(gòu)建模型層 160
6.3.3  建立文檔關(guān)聯(lián) 161
6.3.4  使用BaseModel類 162
6.3.5  使用Pydantic驗(yàn)證 164
6.3.6  使用Pydantic @dataclass查詢文檔 164
6.3.7  實(shí)現(xiàn)存儲(chǔ)庫(kù)層 167
6.3.8  構(gòu)建CRUD事務(wù) 167
6.3.9  管理文檔關(guān)聯(lián) 170
6.3.10  運(yùn)行事務(wù) 171
6.4  使用Motor創(chuàng)建異步CRUD事務(wù) 174
6.4.1  設(shè)置數(shù)據(jù)庫(kù)連接 174
6.4.2  創(chuàng)建模型層 175
6.4.3  構(gòu)建異步存儲(chǔ)層 175
6.4.4  運(yùn)行CRUD事務(wù) 177
6.5  使用MongoEngine實(shí)現(xiàn)CRUD事務(wù) 178
6.5.1  建立數(shù)據(jù)庫(kù)連接 178
6.5.2  構(gòu)建模型層 179
6.5.3  創(chuàng)建文檔關(guān)聯(lián) 180
6.5.4  應(yīng)用自定義序列化和反序列化 182
6.5.5  實(shí)現(xiàn)CRUD事務(wù) 182
6.5.6  管理嵌入文檔 184
6.5.7  運(yùn)行CRUD事務(wù) 185
6.6  使用Beanie實(shí)現(xiàn)異步CRUD事務(wù) 186
6.6.1  創(chuàng)建數(shù)據(jù)庫(kù)連接 186
6.6.2  定義模型類 187
6.6.3  創(chuàng)建文檔關(guān)聯(lián) 189
6.6.4  實(shí)現(xiàn)CRUD事務(wù) 189
6.6.5  運(yùn)行存儲(chǔ)庫(kù)事務(wù) 191
6.7  使用ODMantic為FastAPI構(gòu)建異步存儲(chǔ)庫(kù) 191
6.7.1  創(chuàng)建數(shù)據(jù)庫(kù)連接 191
6.7.2  創(chuàng)建模型層 192
6.7.3  建立文檔關(guān)聯(lián) 193
6.7.4  實(shí)現(xiàn)CRUD事務(wù) 193
6.7.5  運(yùn)行CRUD事務(wù) 195
6.8  使用MongoFrames創(chuàng)建CRUD事務(wù) 196
6.8.1  創(chuàng)建數(shù)據(jù)庫(kù)連接 196
6.8.2  構(gòu)建模型層 197
6.8.3  創(chuàng)建文檔關(guān)聯(lián) 198
6.8.4  創(chuàng)建存儲(chǔ)庫(kù)層 198
6.8.5  應(yīng)用存儲(chǔ)庫(kù)層 200
6.9  小結(jié) 201
第7章  保護(hù)REST API的安全 203
7.1  技術(shù)要求 204
7.2  實(shí)現(xiàn)Basic和Digest身份驗(yàn)證 204
7.2.1  使用Basic身份驗(yàn)證 204
7.2.2  應(yīng)用HTTPBasic和HTTPBasicCredentials 204
7.2.3  執(zhí)行登錄事務(wù) 207
7.2.4  使用Digest身份驗(yàn)證 208
7.2.5  生成哈希憑據(jù) 209
7.2.6  傳遞用戶憑據(jù) 209
7.2.7  使用HTTPDigest和HTTPAuthorizationCredentials 210
7.2.8  執(zhí)行登錄事務(wù) 211
7.3  實(shí)現(xiàn)基于密碼的身份驗(yàn)證 212
7.3.1  安裝python-multipart模塊 212
7.3.2  使用OAuth2PasswordBearer和OAuth2PasswordRequestForm 212
7.3.3  執(zhí)行登錄事務(wù) 213
7.3.4  保護(hù)端點(diǎn)的安全 216
7.4  應(yīng)用JWT 217
7.4.1  生成密鑰 217
7.4.2  創(chuàng)建access_token 218
7.4.3  創(chuàng)建登錄事務(wù) 218
7.4.4  訪問(wèn)安全端點(diǎn) 219
7.5  創(chuàng)建基于作用域的授權(quán) 220
7.5.1  自定義OAuth2類 221
7.5.2  構(gòu)建權(quán)限字典 221
7.5.3  實(shí)現(xiàn)登錄事務(wù) 222
7.5.4  將作用域應(yīng)用于端點(diǎn) 223
7.6  構(gòu)建授權(quán)碼流 225
7.6.1  應(yīng)用OAuth2AuthorizationCodeBearer 225
7.6.2  實(shí)現(xiàn)授權(quán)請(qǐng)求 226
7.6.3  實(shí)現(xiàn)授權(quán)碼響應(yīng) 227
7.7  應(yīng)用OpenID Connect規(guī)范 228
7.7.1  使用HTTPBearer 229
7.7.2  安裝和配置Keycloak環(huán)境 229
7.7.3  設(shè)置Keycloak領(lǐng)域和客戶端 229
7.7.4  創(chuàng)建用戶和用戶角色 231
7.7.5  為客戶端分配角色 232
7.7.6  通過(guò)作用域創(chuàng)建用戶權(quán)限 233
7.7.7  將Keycloak與FastAPI集成在一起 234
7.7.8  實(shí)現(xiàn)令牌驗(yàn)證 236
7.7.9  將Auth0與FastAPI集成在一起 237
7.7.10  將Okta與FastAPI集成在一起 239
7.8  使用內(nèi)置中間件進(jìn)行身份驗(yàn)證 239
7.9  小結(jié) 240
第8章  創(chuàng)建協(xié)程、事件和消息驅(qū)動(dòng)的事務(wù) 241
8.1  技術(shù)要求 241
8.2  實(shí)現(xiàn)協(xié)程 242
8.2.1  應(yīng)用協(xié)程切換 242
8.2.2  應(yīng)用@asyncio.coroutine 242
8.2.3  使用async/await結(jié)構(gòu) 244
8.2.4  設(shè)計(jì)異步事務(wù) 245
8.2.5  使用HTTP/2協(xié)議 248
8.3  創(chuàng)建異步后臺(tái)任務(wù) 248
8.3.1  使用協(xié)程 248
8.3.2  創(chuàng)建多個(gè)任務(wù) 249
8.4  了解Celery任務(wù) 250
8.4.1  創(chuàng)建和配置Celery實(shí)例 251
8.4.2  創(chuàng)建任務(wù) 252
8.4.3  調(diào)用任務(wù) 253
8.4.4  啟動(dòng)工作服務(wù)器 254
8.4.5  監(jiān)控任務(wù) 255
8.5  使用RabbitMQ構(gòu)建消息驅(qū)動(dòng)的事務(wù) 256
8.5.1  創(chuàng)建Celery實(shí)例 256
8.5.2  監(jiān)控AMQP消息傳遞 256
8.6  使用Kafka構(gòu)建發(fā)布/訂閱消息 257
8.6.1  運(yùn)行Kafka代理和服務(wù)器 258
8.6.2  創(chuàng)建主題 258
8.6.3  實(shí)現(xiàn)發(fā)布者 258
8.6.4  在控制臺(tái)上運(yùn)行使用者 259
8.7  實(shí)現(xiàn)異步服務(wù)器發(fā)送事件 260
8.8  構(gòu)建異步WebSocket 262
8.8.1  實(shí)現(xiàn)異步WebSocket端點(diǎn) 262
8.8.2  實(shí)現(xiàn)WebSocket客戶端 263
8.9  在任務(wù)中應(yīng)用反應(yīng)式編程 264
8.9.1  使用協(xié)程創(chuàng)建Observable數(shù)據(jù) 265
8.9.2  創(chuàng)建后臺(tái)進(jìn)程 267
8.9.3  訪問(wèn)API資源 268
8.10  自定義事件 270
8.10.1  定義啟動(dòng)事件 270
8.10.2  定義關(guān)閉事件 270
8.11  小結(jié) 271
第3篇  與基礎(chǔ)設(shè)施相關(guān)的問(wèn)題、數(shù)字和符號(hào)計(jì)算、測(cè)試微服務(wù)
第9章  利用其他高級(jí)功能 275
9.1  技術(shù)要求 275
9.2  應(yīng)用會(huì)話管理 276
9.2.1  創(chuàng)建用戶會(huì)話 276
9.2.2  管理會(huì)話數(shù)據(jù) 278
9.2.3  刪除會(huì)話 280
9.2.4  自定義BaseHTTPMiddleware 280
9.3  管理CORS機(jī)制 282
9.4  自定義APIRoute和Request 284
9.4.1  管理數(shù)據(jù)正文、表單或JSON數(shù)據(jù) 284
9.4.2  加密和解密消息正文 287
9.5  選擇適當(dāng)?shù)捻憫?yīng) 288
9.5.1  設(shè)置Jinja2模板引擎 292
9.5.2  設(shè)置靜態(tài)資源 292
9.5.3  創(chuàng)建模板布局 292
9.5.4  使用ORJSONResponse和UJSONResponse 294
9.6  應(yīng)用OpenAPI 3.x規(guī)范 295
9.6.1  擴(kuò)展OpenAPI模式定義 295
9.6.2  使用內(nèi)部代碼庫(kù)屬性 298
9.6.3  使用Query、Form、Body和Path函數(shù) 300
9.7  測(cè)試API端點(diǎn) 303
9.7.1  編寫單元測(cè)試用例 303
9.7.2  模擬依賴項(xiàng) 304
9.7.3  運(yùn)行測(cè)試方法 306
9.8  小結(jié) 307
第10章  解決數(shù)值、符號(hào)和圖形問(wèn)題 309
10.1  技術(shù)要求 309
10.2  設(shè)置項(xiàng)目 310
10.2.1  使用Piccolo ORM 310
10.2.2  創(chuàng)建數(shù)據(jù)模型 312
10.2.3  實(shí)現(xiàn)存儲(chǔ)層 313
10.2.4  Beanie ODM 314
10.3  實(shí)現(xiàn)符號(hào)計(jì)算 314
10.3.1  創(chuàng)建符號(hào)表達(dá)式 314
10.3.2  求解線性表達(dá)式 315
10.3.3  求解非線性表達(dá)式 316
10.3.4  求解線性和非線性不等式 317
10.4  創(chuàng)建數(shù)組和DataFrame 317
10.4.1  應(yīng)用NumPy的線性系統(tǒng)操作 318
10.4.2  應(yīng)用pandas模塊 319
10.5  執(zhí)行統(tǒng)計(jì)分析 320
10.6  生成CSV和XLSX報(bào)告 321
10.7  繪制數(shù)據(jù)模型 325
10.8  模擬BPMN工作流 328
10.8.1  設(shè)計(jì)BPMN工作流 328
10.8.2  實(shí)現(xiàn)工作流 329
10.9  使用GraphQL查詢和突變 331
10.9.1  設(shè)置GraphQL平臺(tái) 332
10.9.2  創(chuàng)建記錄的插入、更新和刪除 332
10.9.3  實(shí)現(xiàn)查詢事務(wù) 334
10.9.4  運(yùn)行CRUD事務(wù) 334
10.10  利用Neo4j圖數(shù)據(jù)庫(kù) 336
10.10.1  設(shè)置Neo4j數(shù)據(jù)庫(kù) 337
10.10.2  創(chuàng)建CRUD事務(wù) 337
10.11  小結(jié) 340
第11章  添加其他微服務(wù)功能 343
11.1  技術(shù)要求 343
11.2  設(shè)置虛擬環(huán)境 344
11.3  檢查API屬性 346
11.4  實(shí)現(xiàn)OpenTracing機(jī)制 347
11.5  設(shè)置服務(wù)注冊(cè)表和客戶端服務(wù)發(fā)現(xiàn) 350
11.5.1  實(shí)現(xiàn)客戶端服務(wù)發(fā)現(xiàn) 351
11.5.2  設(shè)置Netflix Eureka服務(wù)注冊(cè)表 352
11.6  使用Docker部署和運(yùn)行應(yīng)用程序 353
11.6.1  生成requirements.txt文件 353
11.6.2  創(chuàng)建Docker鏡像 354
11.6.3  使用Mongo Docker鏡像 355
11.6.4  創(chuàng)建容器 355
11.7  使用Docker Compose進(jìn)行部署 356
11.8  使用NGINX作為API網(wǎng)關(guān) 357
11.9  集成Flask和Django子應(yīng)用程序 358
11.10  小結(jié) 360

本目錄推薦

掃描二維碼
Copyright ? 讀書網(wǎng) m.ranfinancial.com 2005-2020, All Rights Reserved.
鄂ICP備15019699號(hào) 鄂公網(wǎng)安備 42010302001612號(hào)