简单絮叨一些
前面一篇文章唠了异常处理和路径操作配置,今天主要唠下依赖项
Fastapi
中提供了依赖注入系统,怎么理解呢?
其实就是本来我是要接收很多参数来构造对象,现在我只接收一个已经实例化的对象。
网上很多的抽象解读,感觉看多了,都emo
了,虽说上述总结的一句话比较狭义,但是并没有偏多少,主旨是存在的。
依赖注入常用于以下场景:
- 共享业务逻辑(复用相同的代码逻辑)
- 共享数据库连接
- 实现安全、验证、角色权限
- 等……
上述场景均可以使用依赖注入,将代码重复最小化。
依赖项
初识依赖项
依赖项的使用必须要导入Depends
,它是Fastapi
提供的专门处理依赖的
import uvicorn
from typing import Optional
from fastapi import FastAPI
from fastapi import Depends
app = FastAPI()
def common_parameters(q: Optional[str] = None, skip: int = 0, limit: int = 10):
return {"q": q, "skip": skip, "limit": limit}
@app.get("/items/")
def read_items(commons: dict = Depends(common_parameters)):
return commons
@app.get("/users/")
def read_user(commons: dict = Depends(common_parameters)):
return commons
if __name__ == '__main__':
uvicorn.run(app="dependency_main:app", reload=True, debug=True)
注释信息:
from fastapi import Depends
导入依赖项commons: dict = Depends(common_parameters)
声明依赖项
注意点:
Depends
中的参数必须是可调用对象,比如函数等。
子依赖项