FastAPI 是一個現代的高效能 Web 框架,用於使用 Python 建立 API,使開發人員能夠以最少的努力創建強大且高效的應用程式。它的設計考慮了非同步編程,使其速度極快並且能夠同時處理多個請求。為 FastAPI 提供支援的關鍵元件包括 Uvicorn、Starlette、Swagger UI 和 Pydantic。在本指南中,我們將探索每個元件,並了解它們如何在 FastAPI 中組合在一起,並使用程式碼範例來示範關鍵概念。
FastAPI 建立在兩個主要基礎上:
讓我們從一個簡單的 FastAPI 應用程式開始,了解其結構:
# main.py from fastapi import FastAPI app = FastAPI() @app.get("/") async def read_root(): return {"Hello": "World"}
這是一個基本的 FastAPI 應用程序,具有單一路由 (/),傳回帶有 {"Hello": "World"} 的 JSON 回應。
要執行此應用程序,您將使用 Uvicorn,一個旨在為非同步 Web 應用程式提供服務的 ASGI 伺服器。
Uvicorn 是一個快如閃電的 ASGI 伺服器,針對處理非同步程式碼進行了最佳化。它對於運行 FastAPI 應用程式至關重要,因為它處理傳入的 HTTP 請求並管理這些請求的生命週期。
要使用 Uvicorn 運行 FastAPI 應用程序,請使用以下命令:
uvicorn main:app --reload
當您執行此命令時,Uvicorn 將開始為您的 FastAPI 應用程式提供服務,您可以透過 http://127.0.0.1:8000 存取它。
FastAPI 建構於 Starlette 之上,後者是一個輕量級 ASGI 框架,用於處理核心 HTTP 操作,包括路由、中間件和 WebSockets 支援。 Starlette 提供了 FastAPI 用於管理 HTTP 請求的低階工具,使其成為建立 Web 應用程式的穩定且高效能的基礎。
FastAPI 利用 Starlette 的路由系統來定義 API 端點。例如:
@app.get("/items/{item_id}") async def read_item(item_id: int): return {"item_id": item_id}
在此範例中:
Starlette 還允許您新增中間件以進行各種操作,例如處理 CORS(跨來源資源共用)、請求日誌記錄或自訂身份驗證:
# main.py from fastapi import FastAPI app = FastAPI() @app.get("/") async def read_root(): return {"Hello": "World"}
Starlette 的這種靈活性使得 FastAPI 具有高度可配置性,允許開發人員根據需要輕鬆添加自訂中間件。
FastAPI 使用 Swagger UI 自動產生互動式 API 文件。該文件預設在 /docs 中提供,並允許開發人員直接從瀏覽器測試端點。
要查看實際效果,請啟動 FastAPI 應用程式並造訪 http://127.0.0.1:8000/docs。您將看到一個互動式 Swagger UI,其中列出了您的所有路線、其參數以及預期回應。
另一個文件接口,ReDoc,預設也在 /redoc 提供,提供更詳細的 API 規範視圖。
FastAPI 最強大的方面之一是它使用 Pydantic 進行資料驗證。 Pydantic 模型可讓您定義具有嚴格類型約束和自動驗證的請求和回應資料的結構。
讓我們在範例中加入 Pydantic 模型:
uvicorn main:app --reload
在此程式碼中:
嘗試使用位於 /docs 的 Swagger UI 發送這樣的請求:
@app.get("/items/{item_id}") async def read_item(item_id: int): return {"item_id": item_id}
FastAPI 將驗證資料並在資料與預期類型不符時自動傳回任何錯誤。例如,如果價格以字串形式給出(如“20”),FastAPI 將回應詳細的驗證錯誤。
讓我們透過添加更多路線並結合迄今為止學到的所有內容來擴展我們的應用程式:
from starlette.middleware.cors import CORSMiddleware app.add_middleware( CORSMiddleware, allow_origins=["*"], allow_credentials=True, allow_methods=["*"], allow_headers=["*"], )
使用此設定:
要執行此應用程序,請使用 Uvicorn:
# main.py from fastapi import FastAPI app = FastAPI() @app.get("/") async def read_root(): return {"Hello": "World"}
導航至 http://127.0.0.1:8000/docs 以查看互動式文檔,或使用 cURL 或 Postman 等工具將請求傳送到不同的端點。
FastAPI 將非同步程式設計的效能優勢與 Python 類型提示的簡單性結合,創建了一個快速、易於使用且適合生產應用程式的框架。透過整合 Uvicorn、Starlette、Swagger UI 和 Pydantic,FastAPI 提供了一種極其簡化的 API 開發方法,使其成為快速原型設計和生產級應用程式的絕佳選擇。
掌握了這些核心基礎知識後,您現在就可以更深入地了解 FastAPI 的世界並建立可擴展的高效能應用程式。
以上是了解 FastAPI 基礎知識:FastAPI、Uvicorn、Starlette、Swagger UI 和 Pydantic 指南的詳細內容。更多資訊請關注PHP中文網其他相關文章!