注冊 | 登錄讀書好,好讀書,讀好書!
讀書網(wǎng)-DuShu.com
當前位置: 首頁出版圖書科學技術計算機/網(wǎng)絡軟件與程序設計其他編程語言/工具利用FastAPI構建Python微服務

利用FastAPI構建Python微服務

利用FastAPI構建Python微服務

定 價:¥129.00

作 者: [美]舍溫·約翰·C.特拉古拉 著,王婷 譯
出版社: 清華大學出版社
叢編項:
標 簽: 暫缺

購買這本書可以去


ISBN: 9787302644866 出版時間: 2023-09-01 包裝: 平裝-膠訂
開本: 16開 頁數(shù): 字數(shù):  

內(nèi)容簡介

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

作者簡介

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

圖書目錄

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

本目錄推薦

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