FastAPI有一个非常强大但是直观的依赖注入系统,它被设计成简单易用,开发人员使用它可以很简单的与FastAPI中的其它部分集成。
“依赖注入”意味着在程序中,对于你的代码有一种方式去声明它运行时需要的东西。这个东西就被称为“依赖项”。然后FastAPI将会按照你声明提供的依赖项去做任何需要做的事情。
通常依赖注入可以:
总之,提高代码的复用率。
它是一个可以像路径操作函数一样接收所有同样参数的函数。
from typing import Optional from fastapi import FastAPI app = FastAPI() async def common_parameters(q: Optional[str] = None, skip: int = 0, limit: int = 10): return {"q": q, "skip": skip, "limit": limit}
其它路径操作函数如果需要使用就需要先导入Depends。
from typing import Optional from fastapi import Depends, FastAPI app = FastAPI() async def common_parameters(q: Optional[str] = None, skip: int = 0, limit: int = 10): return {"q": q, "skip": skip, "limit": limit}
在需要使用上述依赖的路径操作函数中进行声明。
from typing import Optional from fastapi import Depends, FastAPI app = FastAPI() async def common_parameters(q: Optional[str] = None, skip: int = 0, limit: int = 10): return {"q": q, "skip": skip, "limit": limit} @app.get("/items/") async def read_items(commons: dict = Depends(common_parameters)): return commons @app.get("/users/") async def read_users(commons: dict = Depends(common_parameters)): return commons
在路径操作声明依赖项的接收参数以及类型dict(依赖项的返回值是dict类型)。Depends接收一个参数common_parameter(依赖项函数,必须是一个类似函数一样),然后这个参数common-parameter将像路径操作函数一样接收所有参数。
上面的工作方式是当一个新的请求到达后:
同时“/users/”和“/items/”依赖项都是common_parameters,这样显然提高了代码的复用率。
原文:https://www.cnblogs.com/shenjianping/p/14856746.html