全局依赖项

有时,我们要为整个应用添加依赖项。

通过与定义路径装饰器依赖项 类似的方式,可以把依赖项添加至整个 FastAPI 应用。

这样一来,就可以为所有路径操作应用该依赖项:

  1. from fastapi import Depends, FastAPI, Header, HTTPException
  2. async def verify_token(x_token: str = Header(...)):
  3. if x_token != "fake-super-secret-token":
  4. raise HTTPException(status_code=400, detail="X-Token header invalid")
  5. async def verify_key(x_key: str = Header(...)):
  6. if x_key != "fake-super-secret-key":
  7. raise HTTPException(status_code=400, detail="X-Key header invalid")
  8. return x_key
  9. app = FastAPI(dependencies=[Depends(verify_token), Depends(verify_key)])
  10. @app.get("/items/")
  11. async def read_items():
  12. return [{"item": "Portal Gun"}, {"item": "Plumbus"}]
  13. @app.get("/users/")
  14. async def read_users():
  15. return [{"username": "Rick"}, {"username": "Morty"}]

路径装饰器依赖项 一章的思路均适用于全局依赖项, 在本例中,这些依赖项可以用于应用中的所有路径操作

为一组路径操作定义依赖项

稍后,大型应用 - 多文件一章中会介绍如何使用多个文件创建大型应用程序,在这一章中,您将了解到如何为一组路径操作声明单个 dependencies 参数。