FastAPI Web開發入門、進階與實戰

《FastAPI Web開發入門、進階與實戰》是2023年機械工業出版社出版的圖書。

基本介紹

  • 中文名:FastAPI Web開發入門、進階與實戰
  • 作者:鐘遠曉
  • 出版時間:2023年11月1日
  • 出版社:機械工業出版社
  • 頁數:495 頁
  • ISBN:9787111736486
  • 開本:16 開
  • 裝幀:平裝
內容簡介,圖書目錄,

內容簡介

這是一本從實戰角度介紹FastAPI web開發的入門與進階型技術書。本書沒有過多的理論介紹,完全從一線工作角度入手,介紹日常web開發需要掌握的相關知識。本書共分為4篇16章:
第1篇是基礎篇,主要介紹FastAPI的基礎知識,包括FastAPI的基本信息、安裝使用、常規操作、中間件、資料庫相關內容。作為初學者,掌握這部分內容就可以快速上手使用FastAPI,處理各種日常問題。
第二篇是進階篇,主要圍繞與FastAPI相關的高級技能展開,包括異常處理、功能擴展、安全認證、性能、測試等相關內容。
第三篇是實戰篇,主要從案例的角度對FastAPI在典型套用場景中的落地進行分享,包括短鏈套用、websocket、基於公眾號的掛號系統等套用場景。
第四篇是部署篇,這部分重點介紹如何實現FastAPI的自動化部署,這數據高階人員必備技能。本篇提供了三種自動化部署方式。

圖書目錄

前言
第1章 初識FastAPI1
1.1 FastAPI框架概述1
1.1.1 FastAPI與其他Web框架2
1.1.2 FastAPI的特性2
1.2 異步編程基礎4
1.2.1 並發編程機制4
1.2.2 並發與並行5
1.2.3 同步與異步6
1.2.4 阻塞與非阻塞6
1.3 asyncio協程概念7
1.4 asyncio協程簡單套用8
第2章 初試FastAPI11
2.1 搭建開發環境11
2.1.1 安裝Python語言包11
2.1.2 PyCharm的安裝14
2.1.3 PyCharm IDE配置解析器15
2.1.4 PyCharm IDE解析器的切換18
2.1.5 PIP安裝源的設定19
2.2 新建FastAPI項目22
2.2.1 新建簡單項目22
2.2.2 項目依賴庫的安裝24
2.3 簡單項目介紹27
2.3.1 創建app實例對象27
2.3.2 添加API請求路由註冊28
2.3.3 添加後端渲染模板路由29
2.3.4 啟動服務運行30
2.3.5 uvicorn參數說明34
2.3.6 查看互動式API文檔35
第3章 FastAPI基礎入門38
3.1 app套用配置參數詳解38
3.1.1 開啟Debug模式39
3.1.2 關於API互動式文檔參數40
3.1.3 關閉互動式文檔訪問42
3.1.4 全局routes參數說明42
3.1.5 全局異常/錯誤捕獲43
3.2 API端點路由註冊和匹配44
3.2.1 路由節點元數據44
3.2.2 路由URL匹配46
3.2.3 基於APIRouter實例的
   路由註冊48
3.3 同步和異步API端點路由50
3.3.1 同步API端點路由50
3.3.2 異步API端點路由51
3.4 多套用掛載51
3.4.1 主從套用掛載52
3.4.2 掛載其他WSGI套用52
3.5 自定義配置swagger_ui53
3.6 套用配置信息讀取55
3.6.1 基於檔案讀取配置參數55
3.6.2 基於Pydantic和.env環境變數
讀取配置參數56
3.6.3 給配置讀取加上快取58
3.7 API端點路由函式參數58
3.7.1 路徑操作及路徑函式59
3.7.2 Path參數59
3.7.3 Query參數63
3.7.4 Body參數67
3.7.5 Form數據和檔案處理77
3.7.6 Header參數81
3.7.7 Cookie參數設定和讀取83
3.8 請求報文85
3.8.1 Request對象85
3.8.2  多Request屬性信息86
3.9 回響報文87
3.9.1 HTTP狀態碼分類88
3.9.2  HTTP狀態碼89
3.9.3 使用response_model定義回響
報文內容90
3.9.4 Response類型93
3.9.5 自定義Response類型98
3.10 後台異步任務執行99
3.11 套用啟動和關閉事件100
第4章 FastAPI異常及錯誤102
4.1 HTTPException異常103
4.1.1 HTTPException簡單源碼分析103
4.1.2 HTTPException的使用104
4.1.3 覆蓋HTTPException異常處理105
4.2 RequestValidationError錯誤106
4.2.1 RequestValidationError的使用106
4.2.2 覆蓋RequestValidationError
錯誤處理107
4.3 自定義異常108
4.3.1 自定義異常的實現108
4.3.2 自定義內部錯誤碼和異常109
4.4 中間件拋出自定義異常110
第5章 Pydantic數據模型管理113
5.1 Pydantic介紹113
5.2 Pydantic的使用114
5.2.1 模型常見數據類型114
5.2.2 模型參數必選和可選115
5.2.3 模型多層嵌套116
5.2.4 模型對象實例化116
5.2.5 模型對象的轉換117
5.2.6 模型對象的複製118
5.2.7 異常信息的捕獲119
5.2.8 用Field()函式擴展 多複雜
驗證120
5.2.9 自定義驗證器123
5.2.10 自定義驗證器的優先權124
5.2.11 多欄位或模型共享校驗器125
5.2.12 root_validator根驗證器126
5.3 Pydantic在FastAPI中的套用127
5.3.1 模型類和Body的請求127
5.3.2 模型類和依賴注入關係128
5.3.3 模型Config類和ORM轉化130
第6章 FastAPI依賴注入機制詳解133
6.1 依賴注入框架134
6.2 依賴項及其聲明方式139
6.2.1 函式式依賴項140
6.2.2 類方式依賴項142
6.2.3 多個依賴項注入和依賴項
傳參143
6.3 多層依賴項嵌套注入144
6.4 多個依賴對象注入146
6.5 不同位置上的依賴項146
6.5.1 全局依賴項的注入147
6.5.2 路徑操作依賴項的注入148
6.5.3 路由分組依賴項的注入149
第7章 FastAPI中間件151
7.1 HTTP請求中間件151
7.2 @app.middleware裝飾器中間件152
7.3 CORSMiddleware跨域中間件155
7.3.1 跨域中間件的使用156
7.3.2 跨域中間件源碼分析157
7.4 其他中間件161
7.4.1  HTTPSRedirectMiddleware
中間件161
7.4.2 TrustedHostMiddleware中間件162
7.5 自定義中間件164
7.5.1 基於BaseHTTPMiddleware
自定義中間件164
7.5.2 日誌追蹤鏈路ID165
7.5.3 IP白名單中間件167
7.5.4 基於中間件獲取回響報文
內容168
第8章 資料庫的套用170
8.1 資料庫基礎170
8.1.1 SQL概述170
8.1.2 SQL資料庫170
8.1.3 NoSQL資料庫171
8.2 Python操作SQLite資料庫171
8.2.1 創建並連結到資料庫172
8.2.2 游標對象運算元據172
8.3 ORM運算元據庫173
8.4 SQLAlchemy庫174
8.4.1 數據驅動異步和同步說明174
8.4.2 SQLAlchemy同步使用方式175
8.4.3 SQLAlchemy異步使用方式179
8.4.4 SQLAlchemy ORM反向生成
模型184
8.5 SQLModel庫185
8.5.1 SQLModel同步使用方式186
8.5.2 SQLModel異步使用方式188
8.6 在FastAPI中整合異步
  SQLAlchemy處理190
8.6.1 需求分析和結構規劃190
8.6.2 套用配置信息讀取191
8.6.3 配置資料庫引擎191
8.6.4 使用yield管理會話依賴項192
8.6.5 定義表模型192
8.6.6 表模型CRUD封裝193
8.6.7 創建FastAPI實例並完成
表創建194
8.6.8 定義對外可見的API195
8.6.9 完善對外可見的API195
8.6.10 Alembic資料庫版本管理199
8.7 Redis資料庫及aioredis使用201
8.7.1 連線Redis資料庫202
8.7.2 Redis客戶端對象實例化202
8.7.3 Redis基本快取的套用203
8.7.4 Redis發布訂閱的套用206
8.7.5 Redis分散式鎖的套用208
第9章 安全認證機制211
9.1 OpenAPI規範211
9.2 基於標準HTTP的身份驗證方案213
9.2.1 HTTPBasic基本認證方案213
9.2.2 HTTPDigest摘要認證方案215
9.3 基於APIKey的特定密鑰方案221
9.4 基於OAuth 2的授權機制頒發
   令牌方案225
9.4.1 JWT組成結構225
9.4.2 JWT套用實踐227
9.4.3 OAuth 2參數說明228
9.4.4 OAuth 2主體角色230
9.4.5 客戶端模式230
9.4.6 密碼模式237
9.4.7 授權碼模式243
9.4.8 簡化模式253
0章 短鏈套用實戰254
10.1 套用開發背景254
10.2 套用系統功能需求描述255
10.3 項目代碼編寫256
10.3.1 項目規劃256
10.3.2 套用配置信息讀取257
10.3.3 配置資料庫引擎257
10.3.4 使用yield管理會話依賴項257
10.3.5 定義表模型258
10.3.6 用戶信息表CURD封裝259
10.3.7 短鏈信息表CURD封裝260
10.3.8 創建FastAPI實例並初始
  化表261
10.3.9 創建測試賬號262
10.3.10 定義短鏈重定向接口262
10.3.11 定義短鏈生成接口263
10.3.12 將子路由添加到根路由並
 啟動服務267
1章 WebSocket+Vue簡易聊天室
  實戰269
11.1 WebSocket簡介269
11.2 項目系統描述270
11.3 項目代碼編寫271
11.3.1 項目代碼結構271
11.3.2 前端頁面開發272
11.3.3 後端開發280
11.3.4 跨進程WebSocket通信290
2章 預約掛號系統實戰298
12.1 套用開發背景及系統功能需求299
12.2 項目框架結構規劃300
12.3 使用路由分組模組化程式301
12.3.1 APIRouter參數說明302
12.3.2 APIRouter路由分組創建303
12.3.3 視圖函式綁定303
12.3.4 APIRouter路由分組註冊304
12.4 數據表模型設計304
12.4.1 資料庫安裝304
12.4.2 數據表設計308
12.4.3 模型類逆向生成310
12.4.4 資料庫引擎配置313
12.5 後端項目基礎框架搭建315
12.5.1 資料庫配置315
12.5.2  統一API內容規範317
12.5.3  全局異常/錯誤處理320
12.5.4 基於中間件日誌記錄322
12.6 關鍵業務API實現334
12.6.1 微信登錄授權334
12.6.2 獲取首頁醫院信息337
12.6.3 獲取醫生列表信息340
12.6.4 獲取醫生排班信息341
12.6.5 獲取排班信息詳情345
12.6.6 訂單提交並支付346
12.6.7 未支付訂單再次支付353
12.6.8 微信支付回調357
12.6.9 歷史預約詳情列表接口361
12.6.10 其他業務接口說明361
12.7 逾時訂單處理362
12.7.1 訊息佇列說明362
12.7.2 AMQP介紹362
12.7.3 本地安裝RabbitMQ364
12.7.4 RabbitMQ簡單套用369
12.7.5 RabbitMQ死信佇列371
12.7.6 訂單逾時後自動取消的實現373
12.8 同步轉異步處理382
12.8.1 asgiref轉換庫介紹383
12.8.2 asgiref轉換庫套用383
3章 基於Pytest的API測試385
13.1 Pytest簡單套用385
13.1.1 unittest和Pytest的對比386
13.1.2 pytest.fixture裝飾器的使用390
13.1.3 測試配置檔案conftest.py395
13.2 用FastAPI進行API單元測試397
13.2.1 基於TestClient的單元測試397
13.2.2 基於Httpx的異步單元測試398
4章 生產環境部署詳解405
14.1 Linux伺服器下部署應用程式405
14.1.1 分配具有root許可權的
 普通用戶406
14.1.2 Linux系統上安裝Python 3406
14.1.3 基於pyenv管理Python版本407
14.1.4 基於pipenv管理虛擬環境410
14.1.5 生成依賴項配置檔案412
14.1.6 基於Gunicorn+Uvicorn的
  服務部署414
14.1.7 基於Supervisor的服務進程
管理416
14.1.8 基於OpenResty的反向代理419
14.1.9 PostgreSQL資料庫的安裝423
14.2 基於SVN自動化部署425
14.3 基於Docker進行服務部署427
14.3.1 Docker的安裝和常用命令428
14.3.2 基於Dockerfile構建鏡像430
14.3.3 Docker容器化部署與運行432
14.4 Docker下的環境變數433
14.4.1 基於OS標準庫433
14.4.2 基於Pydantic中的BaseSettings
 自動綁定並解析環境變數434
14.4.3 Docker下的環境變數讀取434
14.5 基於Docker Compose進行服務
   編排436
14.5.1 多服務容器獨立運行部署436
14.5.2 多Docker容器一鍵編排部署437
14.6 基於Gogs+Drone進行可持續
   集成441
14.6.1 通過Gogs搭建自助Git服務441
14.6.2 通過Drone搭建持續集成和
 持續交付444
5章 FastAPI實戰常見問題454
15.1 依賴注入項的傳參454
15.2 自定義外掛程式開發456
15.2.1 外掛程式模板基類的定義456
15.2.2 實現類似Flask鉤子事件
 外掛程式457
15.3 body重複消費引發阻塞問題460
15.3.1 阻塞問題復現460
15.3.2 解決方案462
15.4 全局request變數465
15.5 同步和異步相互轉換467
15.5.1 asgiref轉換包467
15.5.2 asyncer轉換包469
15.6 Model回響報文的排序470
15.7 同步和異步郵件傳送471
15.7.1 同步方式472
15.7.2 異步方式474
15.8 基於Jaeger實現分散式
鏈路追蹤476
15.8.1 分散式鏈路追蹤的簡單定義476
15.8.2 OpenTracing數據模型477
15.8.3 Jaeger介紹478
15.8.4 Jaeger安裝和套用479
15.8.5 基於Jaeger SDK實現鏈路
 追蹤480
15.8.6 FastAPI整合Jaeger SDK482
15.8.7 基於Jaeger SDK的跨服務
 鏈路統計486
15.9 基於Sentry實現錯誤信息收集489
15.9.1 Sentry安裝和配置489
15.9.2 FastAPI框架中引入Sentry492
check!

熱門詞條

聯絡我們