-
>
決戰(zhàn)行測5000題(言語理解與表達(dá))
-
>
軟件性能測試.分析與調(diào)優(yōu)實踐之路
-
>
第一行代碼Android
-
>
深度學(xué)習(xí)
-
>
Unreal Engine 4藍(lán)圖完全學(xué)習(xí)教程
-
>
深入理解計算機(jī)系統(tǒng)-原書第3版
-
>
Word/Excel PPT 2013辦公應(yīng)用從入門到精通-(附贈1DVD.含語音視頻教學(xué)+辦公模板+PDF電子書)
FASTAPI WEB開發(fā)入門、進(jìn)階與實戰(zhàn) 版權(quán)信息
- ISBN:9787111736486
- 條形碼:9787111736486 ; 978-7-111-73648-6
- 裝幀:平裝-膠訂
- 冊數(shù):暫無
- 重量:暫無
- 所屬分類:>>
FASTAPI WEB開發(fā)入門、進(jìn)階與實戰(zhàn) 本書特色
FastAPI被認(rèn)為是取代Flask和Django的高性能的Web框架,是業(yè)界公認(rèn)的Python Web的未來。尤其是在Python盛行的當(dāng)下,F(xiàn)astAPI前景更被看好。InfoWorld發(fā)布的2021年*佳開源軟件中,F(xiàn)astAPI位列其中。FastAPI具有運(yùn)行快速、編碼快捷、錯誤更少、操作直觀、簡易、代碼簡短、穩(wěn)健、基于標(biāo)準(zhǔn)。但是學(xué)習(xí)FastAPI有一定的門檻,本書從0開始,手把手教你玩轉(zhuǎn)FastAPI,是一本從入門到精通的好書。
FASTAPI WEB開發(fā)入門、進(jìn)階與實戰(zhàn) 內(nèi)容簡介
這是一本從實戰(zhàn)角度介紹FastAPI web開發(fā)的入門與進(jìn)階型技術(shù)書。本書沒有過多的理論介紹,接近從一線工作角度入手,介紹日常web開發(fā)需要掌握的相關(guān)知識。本書共分為4篇16章:第1篇是基礎(chǔ)篇,主要介紹FastAPI的基礎(chǔ)知識,包括FastAPI的基本信息、安裝使用、常規(guī)操作、中間件、數(shù)據(jù)庫相關(guān)內(nèi)容。作為初學(xué)者,掌握這部分內(nèi)容就可以快速上手使用FastAPI,處理各種日常問題。第二篇是進(jìn)階篇,主要圍繞與FastAPI相關(guān)的高級技能展開,包括異常處理、功能擴(kuò)展、安全認(rèn)證、性能、測試等相關(guān)內(nèi)容。第三篇是實戰(zhàn)篇,主要從案例的角度對FastAPI在典型應(yīng)用場景中的落地進(jìn)行分享,包括短鏈應(yīng)用、websocket、基于公眾號的掛號系統(tǒng)等應(yīng)用場景。第四篇是部署篇,這部分重點介紹如何實現(xiàn)FastAPI的自動化部署,這數(shù)據(jù)高階人員推薦技能。本篇提供了三種自動化部署方式。
FASTAPI WEB開發(fā)入門、進(jìn)階與實戰(zhàn) 目錄
前言
第1章 初識FastAPI1
1.1 FastAPI框架概述1
1.1.1 FastAPI與其他Web框架2
1.1.2 FastAPI的特性2
1.2 異步編程基礎(chǔ)4
1.2.1 并發(fā)編程機(jī)制4
1.2.2 并發(fā)與并行5
1.2.3 同步與異步6
1.2.4 阻塞與非阻塞6
1.3 asyncio協(xié)程概念7
1.4 asyncio協(xié)程簡單應(yīng)用8
第2章 初試FastAPI11
2.1 搭建開發(fā)環(huán)境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安裝源的設(shè)置19
2.2 新建FastAPI項目22
2.2.1 新建簡單項目22
2.2.2 項目依賴庫的安裝24
2.3 簡單項目介紹27
2.3.1 創(chuàng)建app實例對象27
2.3.2 添加API請求路由注冊28
2.3.3 添加后端渲染模板路由29
2.3.4 啟動服務(wù)運(yùn)行30
2.3.5 uvicorn參數(shù)說明34
2.3.6 查看交互式API文檔35
第3章 FastAPI基礎(chǔ)入門38
3.1 app應(yīng)用配置參數(shù)詳解38
3.1.1 開啟Debug模式39
3.1.2 關(guān)于API交互式文檔參數(shù)40
3.1.3 關(guān)閉交互式文檔訪問42
3.1.4 全局routes參數(shù)說明42
3.1.5 全局異常/錯誤捕獲43
3.2 API端點路由注冊和匹配44
3.2.1 路由節(jié)點元數(shù)據(jù)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 多應(yīng)用掛載51
3.4.1 主從應(yīng)用掛載52
3.4.2 掛載其他WSGI應(yīng)用52
3.5 自定義配置swagger_ui53
3.6 應(yīng)用配置信息讀取55
3.6.1 基于文件讀取配置參數(shù)55
3.6.2 基于Pydantic和.env環(huán)境變量
讀取配置參數(shù)56
3.6.3 給配置讀取加上緩存58
3.7 API端點路由函數(shù)參數(shù)58
3.7.1 路徑操作及路徑函數(shù)59
3.7.2 Path參數(shù)59
3.7.3 Query參數(shù)63
3.7.4 Body參數(shù)67
3.7.5 Form數(shù)據(jù)和文件處理77
3.7.6 Header參數(shù)81
3.7.7 Cookie參數(shù)設(shè)置和讀取83
3.8 請求報文85
3.8.1 Request對象85
3.8.2 更多Request屬性信息86
3.9 響應(yīng)報文87
3.9.1 HTTP狀態(tài)碼分類88
3.9.2 指定HTTP狀態(tài)碼89
3.9.3 使用response_model定義響應(yīng)
報文內(nèi)容90
3.9.4 Response類型93
3.9.5 自定義Response類型98
3.10 后臺異步任務(wù)執(zhí)行99
3.11 應(yīng)用啟動和關(guān)閉事件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 自定義異常的實現(xiàn)108
4.3.2 自定義內(nèi)部錯誤碼和異常109
4.4 中間件拋出自定義異常110
第5章 Pydantic數(shù)據(jù)模型管理113
5.1 Pydantic介紹113
5.2 Pydantic的使用114
5.2.1 模型常見數(shù)據(jù)類型114
5.2.2 模型參數(shù)必選和可選115
5.2.3 模型多層嵌套116
5.2.4 模型對象實例化116
5.2.5 模型對象的轉(zhuǎn)換117
5.2.6 模型對象的復(fù)制118
5.2.7 異常信息的捕獲119
5.2.8 用Field()函數(shù)擴(kuò)展更多復(fù)雜
驗證120
5.2.9 自定義驗證器123
5.2.10 自定義驗證器的優(yōu)先級124
5.2.11 多字段或模型共享校驗器125
5.2.12 root_validator根驗證器126
5.3 Pydantic在FastAPI中的應(yīng)用127
5.3.1 模型類和Body的請求127
5.3.2 模型類和依賴注入關(guān)系128
5.3.3 模型Config類和ORM轉(zhuǎn)化130
第6章 FastAPI依賴注入機(jī)制詳解133
6.1 依賴注入框架134
6.2 依賴項及其聲明方式139
6.2.1 函數(shù)式依賴項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 基于中間件獲取響應(yīng)報文
內(nèi)容168
第8章 數(shù)據(jù)庫的應(yīng)用170
8.1 數(shù)據(jù)庫基礎(chǔ)170
8.1.1 SQL概述170
8.1.2 SQL數(shù)據(jù)庫170
8.1.3 NoSQL數(shù)據(jù)庫171
8.2 Python操作SQLite數(shù)據(jù)庫171
8.2.1 創(chuàng)建并鏈接到數(shù)據(jù)庫172
8.2.2 游標(biāo)對象操作數(shù)據(jù)172
8.3 ORM操作數(shù)據(jù)庫173
8.4 SQLAlchemy庫174
8.4.1 數(shù)據(jù)驅(qū)動異步和同步說明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 需求分析和結(jié)構(gòu)規(guī)劃190
8.6.2 應(yīng)用配置信息讀取191
8.6.3 配置數(shù)據(jù)庫引擎191
8.6.4 使用yield管理會話依賴項192
8.6.5 定義表模型192
8.6.6 表模型CRUD封裝193
8.6.7 創(chuàng)建FastAPI實例并完成
表創(chuàng)建194
8.6.8 定義對外可見的API195
8.6.9 完善對外可見的API195
8.6.10 Alembic數(shù)據(jù)庫版本管理199
8.7 Redis數(shù)據(jù)庫及aioredis使用201
8.7.1 連接Redis數(shù)據(jù)庫202
8.7.2 Redis客戶端對象實例化202
8.7.3 Redis基本緩存的應(yīng)用203
8.7.4 Redis發(fā)布訂閱的應(yīng)用206
8.7.5 Redis分布式鎖的應(yīng)用208
第9章 安全認(rèn)證機(jī)制211
9.1 OpenAPI規(guī)范211
9.2 基于標(biāo)準(zhǔn)HTTP的身份驗證方案213
9.2.1 HTTPBasic基本認(rèn)證方案213
9.2.2 HTTPDigest摘要認(rèn)證方案215
9.3 基于APIKey的特定密鑰方案221
9.4 基于OAuth 2的授權(quán)機(jī)制頒發(fā)
令牌方案225
9.4.1 JWT組成結(jié)構(gòu)225
9.4.2 JWT應(yīng)用實踐227
9.4.3 OAuth 2參數(shù)說明228
9.4.4 OAuth 2主體角色230
9.4.5 客戶端模式230
9.4.6 密碼模式237
9.4.7 授權(quán)碼模式243
9.4.8 簡化模式253
第10章 短鏈應(yīng)用實戰(zhàn)254
10.1 應(yīng)用開發(fā)背景254
10.2 應(yīng)用系統(tǒng)功能需求描述255
10.3 項目代碼編寫256
10.3.1 項目規(guī)劃256
10.3.2 應(yīng)用配置信息讀取257
10.3.3 配置數(shù)據(jù)庫引擎257
10.3.4 使用yield管理會話依賴項257
10.3.5 定義表模型258
10.3.6 用戶信息表CURD封裝259
10.3.7 短鏈信息表CURD封裝260
10.3.8 創(chuàng)建FastAPI實例并初始
化表261
10.3.9 創(chuàng)建測試賬號262
10.3.10 定義短鏈重定向接口262
10.3.11 定義短鏈生成接口263
10.3.12 將子路由添加到根路由并
啟動服務(wù)267
第11章 WebSocket Vue簡易聊天室
實戰(zhàn)269
11.1 WebSocket簡介269
11.2 項目系統(tǒng)描述270
11.3 項目代碼編寫271
11.3.1 項目代碼結(jié)構(gòu)271
11.3.2 前端頁面開發(fā)272
11.3.3 后端開發(fā)280
11.3.4 跨進(jìn)程WebSocket通信290
第12章 預(yù)約掛號系統(tǒng)實戰(zhàn)298
12.1 應(yīng)用開發(fā)背景及系統(tǒng)功能需求299
12.2 項目框架結(jié)構(gòu)規(guī)劃300
12.3 使用路由分組模塊化程序301
12.3.1 APIRouter參數(shù)說明302
12.3.2 APIRouter路由分組創(chuàng)建303
12.3.3 視圖函數(shù)綁定303
12.3.4 APIRouter路由分組注冊304
12.4 數(shù)據(jù)表模型設(shè)計304
12.4.1 數(shù)據(jù)庫安裝304
12.4.2 數(shù)據(jù)表設(shè)計308
12.4.3 模型類逆向生成310
12.4.4 數(shù)據(jù)庫引擎配置313
12.5 后端項目基礎(chǔ)框架搭建315
12.5.1 數(shù)據(jù)庫配置315
12.5.2 定制統(tǒng)一API內(nèi)容規(guī)范317
12.5.3 定制全局異常/錯誤處理320
12.5.4 基于中間件日志記錄322
12.6 關(guān)鍵業(yè)務(wù)API實現(xiàn)334
12.6.1 微信登錄授權(quán)334
12.6.2 獲取首頁醫(yī)院信息337
12.6.3 獲取醫(yī)生列表信息340
12.6.4 獲取醫(yī)生排班信息341
12.6.5 獲取排班信息詳情345
12.6.6 訂單提交并支付346
12.6.7 未支付訂單再次支付353
12.6.8 微信支付回調(diào)357
12.6.9 歷史預(yù)約詳情列表接口361
12.6.10 其他業(yè)務(wù)接口說明361
12.7 超時訂單處理362
12.7.1 消息隊列說明362
12.7.2 AMQP介紹362
12.7.3 本地安裝RabbitMQ364
12.7.4 RabbitMQ簡單應(yīng)用369
12.7.5 RabbitMQ死信隊列371
12.7.6 訂單超時后自動取消的實現(xiàn)373
12.8 同步轉(zhuǎn)異步處理382
12.8.1 asgiref轉(zhuǎn)換庫介紹383
12.8.2 asgiref轉(zhuǎn)換庫應(yīng)用383
第13章 基于Pytest的API測試385
13.1 Pytest簡單應(yīng)用385
13.1.1 unittest和Pytest的對比386
13.1.2 pytest.fixture裝飾器的使用390
13.1.3 測試配置文件conftest.py395
13.2 用FastAPI進(jìn)行API單元測試397
13.2.1 基于TestClient的單元測試397
13.2.2 基于Httpx的異步單元測試398
第14章 生產(chǎn)環(huán)境部署詳解405
14.1 Linux服務(wù)器下部署應(yīng)用程序405
14.1.1 分配具有root權(quán)限的
普通用戶406
14.1.2 Linux系統(tǒng)上安裝Python 3406
14.1.3 基于pyenv管理Python版本407
14.1.4 基于pipenv管理虛擬環(huán)境410
14.1.5 生成依賴項配置文件412
14.1.6 基于Gunicorn Uvicorn的
服務(wù)部署414
14.1.7 基于Supervisor的服務(wù)進(jìn)程
管理416
14.1.8 基于OpenResty的反向代理419
14.1.9 PostgreSQL數(shù)據(jù)庫的安裝423
14.2 基于SVN自動化部署425
14.3 基于Docker進(jìn)行服務(wù)部署427
14.3.1 Docker的安裝和常用命令428
14.3.2 基于Dockerfile構(gòu)建鏡像430
14.3.3 Docker容器化部署與運(yùn)行432
14.4 Docker下的環(huán)境變量433
14.4.1 基于OS標(biāo)準(zhǔn)庫433
14.4.2 基于Pydantic中的BaseSettings
自動綁定并解析環(huán)境變量434
14.4.3 Docker下的環(huán)境變量讀取434
14.5 基于Docker Compose進(jìn)行服務(wù)
編排436
14.5.1 多服務(wù)容器獨立運(yùn)行部署436
14.5.2 多Docker容器一鍵編排部署437
14.6 基于Gogs Drone進(jìn)行可持續(xù)
集成441
14.6.1 通過Gogs搭建自助Git服務(wù)441
14.6.2 通過Drone搭建持續(xù)集成和
持續(xù)交付444
第15章 FastAPI實戰(zhàn)常見問題454
15.1 依賴注入項的傳參454
15.2 自定義插件開發(fā)456
15.2.1 插件模板基類的定義456
15.2.2 實現(xiàn)類似Flask鉤子事件
插件457
15.3 body重復(fù)消費(fèi)引發(fā)阻塞問題460
15.3.1 阻塞問題復(fù)現(xiàn)460
15.3.2 解決方案462
15.4 全局request變量465
15.5 同步和異步相互轉(zhuǎn)換467
15.5.1 asgiref轉(zhuǎn)換包467
15.5.2 asyncer轉(zhuǎn)換包469
15.6 Model響應(yīng)報文的排序470
15.7 同步和異步郵件發(fā)送471
15.7.1 同步方式472
15.7.2 異步方式474
15.8 基于Jaeger實現(xiàn)分布式
鏈路追蹤476
15.8.1 分布式鏈路追蹤的簡單定義476
15.8.2 OpenTracing數(shù)據(jù)模型477
15.8.3 Jaeger介紹478
15.8.4 Jaeger安裝和應(yīng)用479
15.8.5 基于Jaeger SDK實現(xiàn)鏈路
追蹤480
15.8.6 FastAPI整合Jaeger SDK482
15.8.7 基于Jaeger SDK的跨服務(wù)
鏈路統(tǒng)計486
15.9 基于Sentry實現(xiàn)錯誤信息收集489
15.9.1 Sentry安裝和配置489
15.9.2 FastAPI框架中引入Sentry492
FASTAPI WEB開發(fā)入門、進(jìn)階與實戰(zhàn) 相關(guān)資料
本書由淺入深地介紹了FastAPI的原理與實踐,并通過大量案例講解了與FastAPI相關(guān)的技術(shù)要點和難點。通過本書讀者可以輕松掌握并使用FastAPI。總之,這是一本非常接地氣的入門并實踐FastAPI的好書。
-陳煥 北京銀豐新融科技開發(fā)有限公司 項目總監(jiān)
《我的第一個Python Web開發(fā)框架》與《從零開始編寫自己的C#框架》作者
對于軟件開發(fā)來說入門是最大的難點,而Web開發(fā)因新技術(shù)、新框架眾多,對初學(xué)者來說入門就更難了。聚焦到FastAPI,在缺少足夠?qū)嵺`經(jīng)驗的情況下,如何選擇和構(gòu)建出一個完整的技術(shù)棧?本書給出了一套有效的解決方案,這套方案可以讓初學(xué)者少走彎路,不踩坑。本書還給出很多作者精心提煉的一線案例,這些案例代碼可以直接用于生產(chǎn)環(huán)境,而其中包含的豐富經(jīng)驗和實用性是API文檔中沒有的,是純知識驗證型示例代碼中沒有的。閱讀本書,學(xué)習(xí)技術(shù),領(lǐng)悟一名老程序員的經(jīng)驗!
-馬杰 副教授,TurboSnail軟件研發(fā)團(tuán)隊負(fù)責(zé)人
我很榮幸為廣大讀者推薦這本關(guān)于FastAPI的杰作。看完本書后及鐘兄的博客后,我成功構(gòu)筑了造數(shù)平臺中的分布式架構(gòu)造數(shù)平臺。如今,造數(shù)平臺在公司內(nèi)部得到廣泛贊譽(yù),在公司外部得到了眾多開發(fā)者的高度認(rèn)可和使用。在此,讓我向鐘兄表達(dá)由衷的感激,同時期盼這本書能為更多的讀者打開FastAPI的神奇之門,成為大家編程旅程中的永恒知音。
- 章福鵬 米哈游 業(yè)務(wù)平臺組/基礎(chǔ)服務(wù)組/運(yùn)維平臺組 開發(fā)工程師
本書對FastAPI相關(guān)的基礎(chǔ)知識以及如何使用FastAPI進(jìn)行了詳細(xì)說明,對于常見的FastAPI相關(guān)的問題也進(jìn)行了非常清晰和透徹解析,值得學(xué)習(xí)以及參考。
- 周浩輝 廣東省電信規(guī)劃設(shè)計院 數(shù)據(jù)庫系統(tǒng)工程師
FastAPI能夠以驚人的速度處理高并發(fā)請求,并且提供強(qiáng)大的類型提示和自動文檔生成功能,使得開發(fā)過程更加高效和可靠。本書是難得的入門FastAPI的好書,書中從基礎(chǔ)到實踐都有詳細(xì)介紹,對于想要自己構(gòu)建一個完整后端應(yīng)用的讀者來說,本書值得參考學(xué)習(xí)。
- 郭志強(qiáng) 佛山科橋科技有限公司 技術(shù)總監(jiān)
FASTAPI WEB開發(fā)入門、進(jìn)階與實戰(zhàn) 作者簡介
鐘遠(yuǎn)曉(網(wǎng)名小鐘同學(xué)),某知名企業(yè)資深軟件工程師。 *FastAPI社區(qū)貢獻(xiàn)者,為FastAPI社區(qū)貢獻(xiàn)大量代碼和文檔。 *FastAPI嘗鮮者、實踐者,用FastAPI開發(fā)了多個高性能、可擴(kuò)展的大型Web應(yīng)用。 *FastAPI推動者,通過公眾號“程序員小鐘同學(xué)”發(fā)表了近百篇FastAPI相關(guān)技術(shù)文章。 *精通Python、Go、Android等開發(fā)語言,及FastAPI、Flask和Django等框架。 *具有多年的全棧開發(fā)經(jīng)驗,在現(xiàn)代Web應(yīng)用開發(fā)、Python生態(tài)系統(tǒng)方面經(jīng)驗尤其豐富。
- >
【精裝繪本】畫給孩子的中國神話
- >
我從未如此眷戀人間
- >
巴金-再思錄
- >
大紅狗在馬戲團(tuán)-大紅狗克里弗-助人
- >
中國歷史的瞬間
- >
隨園食單
- >
名家?guī)阕x魯迅:故事新編
- >
詩經(jīng)-先民的歌唱