以下是一个使用全局依赖项的 FastAPI 示例:
from fastapi import Depends, FastAPI, HTTPException
app = FastAPI()
# 全局依赖项
async def common_global_dependency(token: str = Depends(lambda x: x.headers.get("token"))):
if token != "fake-global-token":
raise HTTPException(status_code=400, detail="Invalid global token")
return token
# 路径操作
@app.get("/items/")
async def read_items(common_dep: str = Depends(common_global_dependency)):
return {"common_dep": common_dep}
@app.get("/items/{item_id}")
async def read_item(item_id: int, common_dep: str = Depends(common_global_dependency)):
return {"item_id": item_id, "common_dep": common_dep}
在这个例子中,common_global_dependency 是一个全局依赖项,它从请求头中获取 token。无论访问哪个路径操作,这个依赖项都会在处理请求之前执行。
然后,common_dep 参数被传递给两个路径操作函数,使得这两个路径操作共享相同的全局依赖项。如果 token 不是 "fake-global-token",则抛出 HTTPException 表示无效的全局令牌。
使用全局依赖项可以方便地在整个应用程序中共享状态、验证全局条件或执行其他需要在每个请求之前完成的任务。
转载请注明出处:http://www.pingtaimeng.com/article/detail/7388/FastAPI