FastAPI是一個現代、快速(高性能)的Python Web框架,專爲構建RESTful API設計。它基於標準Python類型提示,自動生成交互式API文檔(Swagger UI和ReDoc),並且支持異步操作,非常適合初學者快速上手。
一、環境搭建¶
在開始之前,我們需要先安裝FastAPI和一個ASGI服務器(Uvicorn)。打開終端,執行以下命令:
pip install fastapi uvicorn
安裝完成後,我們就可以開始編寫代碼了。
二、第一個GET接口:獲取用戶列表¶
GET方法用於從服務器獲取資源。這裏我們將創建一個接口,用於返回一個模擬的用戶列表。
代碼示例:¶
from fastapi import FastAPI
# 創建FastAPI應用實例
app = FastAPI()
# 模擬數據庫數據
users = [
{"id": 1, "name": "張三", "age": 20},
{"id": 2, "name": "李四", "age": 25}
]
# 定義GET接口,路徑爲"/users"
@app.get("/users")
def get_users():
"""獲取所有用戶信息"""
return users # 返回用戶列表,FastAPI會自動轉爲JSON格式
代碼解釋:¶
- 導入FastAPI:
from fastapi import FastAPI導入核心框架類。 - 創建應用實例:
app = FastAPI()實例化FastAPI對象,後續的接口定義都通過這個實例完成。 - 模擬數據:
users列表模擬數據庫中的用戶數據,便於測試。 - 定義GET接口:
@app.get("/users")裝飾器指定接口的訪問路徑爲/users,請求方法爲GET。def get_users()是處理該請求的函數,返回值會自動序列化爲JSON格式返回給客戶端。
效果測試:¶
運行代碼後,在終端執行:
uvicorn main:app --reload
(注:main是你的Python文件名,app是創建的FastAPI實例名,--reload參數表示代碼修改後自動重啓服務器)
打開瀏覽器訪問 http://localhost:8000/docs,你會看到FastAPI自動生成的交互式API文檔(Swagger UI)。點擊GET /users接口旁的”Try it out”,然後點擊”Execute”,即可看到返回的用戶列表。
三、第二個POST接口:創建新用戶¶
POST方法用於向服務器提交數據,這裏我們將創建一個接口,接收新用戶的信息並返回創建的用戶。
代碼示例:¶
from fastapi import FastAPI
from pydantic import BaseModel # 用於定義請求數據格式
app = FastAPI()
# 模擬數據庫數據
users = [
{"id": 1, "name": "張三", "age": 20},
{"id": 2, "name": "李四", "age": 25}
]
# 定義請求數據模型:用戶信息
class UserCreate(BaseModel):
name: str # 姓名,字符串類型
age: int # 年齡,整數類型
# 定義POST接口,路徑爲"/users"
@app.post("/users")
def create_user(user: UserCreate):
"""創建新用戶"""
# 生成新用戶ID(假設最大ID+1)
new_id = max([u["id"] for u in users]) + 1 if users else 1
new_user = {"id": new_id, **user.dict()} # **user.dict() 解包字典
users.append(new_user)
return new_user # 返回創建後的用戶信息
代碼解釋:¶
- Pydantic模型:
UserCreate類繼承自BaseModel,用於定義POST請求需要接收的數據格式。這裏要求必須提供name(字符串)和age(整數),FastAPI會自動驗證輸入數據類型,避免無效數據。 - POST接口定義:
@app.post("/users")裝飾器指定請求路徑爲/users,方法爲POST。def create_user(user: UserCreate)中的user: UserCreate表示請求體的數據類型爲UserCreate模型,FastAPI會自動解析請求中的JSON數據並傳入該參數。 - 邏輯處理:根據現有用戶的最大ID生成新用戶ID,將新用戶信息添加到
users列表中,並返回創建後的用戶。
效果測試:¶
在Swagger UI中點擊POST /users接口,填寫請求體:
{
"name": "王五",
"age": 30
}
點擊”Execute”後,即可看到新用戶被創建並返回。此時再訪問GET /users接口,就能看到王五的信息已被加入列表。
四、總結¶
通過以上兩個示例,我們完成了一個簡單的RESTful API框架:
- GET方法:用於獲取資源(如用戶列表),代碼簡潔,直接返回數據。
- POST方法:用於提交數據(如創建新用戶),通過Pydantic模型實現數據驗證,確保輸入格式正確。
- FastAPI優勢:自動生成API文檔,無需手動寫文檔;類型提示和數據驗證,減少錯誤;高性能和異步支持,未來可擴展性強。
接下來,你可以嘗試擴展接口:
- 添加路徑參數(如/users/{user_id}獲取單個用戶)
- 實現PUT(更新)和DELETE(刪除)方法
- 結合數據庫(如SQLite)存儲真實數據
FastAPI的學習曲線很平緩,文檔完善且交互式,非常適合作爲API開發的入門框架。現在,動手實踐吧!