在 FastAPI 中,全局依赖项(Global Dependencies)是在整个应用程序中全局共享的依赖项。这些依赖项在每个请求处理之前都会被执行,无论请求是访问哪个路径操作。这提供了一种在整个应用程序中共享状态或执行全局任务的方式。

以下是一个使用全局依赖项的 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