FastAPI 的依赖系统是它最有辨识度的能力之一。
你可以把依赖理解成:
- 先经过安检
- 再验身份证
- 再进入具体窗口
from typing import Annotated
from fastapi import Depends, FastAPI, Header, HTTPException
app = FastAPI()
async def verify_city_token(x_token: Annotated[str, Header()]):
if x_token != "software-city-secret":
raise HTTPException(status_code=401, detail="无效通行令")
return x_token
CityToken = Annotated[str, Depends(verify_city_token)]
@app.get("/internal/stats")
async def get_stats(token: CityToken):
return {"message": "内部统计数据", "token": token}依赖可以依赖别的依赖,会形成一棵树。
请求进入
│
▼
verify_token()
│
▼
get_current_user()
│
▼
具体业务窗口