Tob*_*Sko 22 dependency-injection fastapi
所以我试图在这里编写简单的函数,但是每次我运行 swagger 时,都会出现上述错误。
这是我的功能:
def authenticate_user(username: str, password: str, db: Session = Depends(bd.get_db)):
user = db.query(bd.User.username).filter(username == username).first()
if not user:
return False
if not verify_password(password, user.password_hash):
return False
return user
Run Code Online (Sandbox Code Playgroud)
这是我的 get_db 函数,它非常标准:
def get_db():
db = SessionLocal()
try:
yield db
finally:
db.close()
Run Code Online (Sandbox Code Playgroud)
我注意到它Depends(bd.get_db)在端点函数(带有@app.post/@app.get装饰器的函数)中工作得很好,但在普通函数中却不起作用。
显然,我不太理解依赖注入的概念,但我还不能完全理解它。
Zho*_*gbo 48
该页面对我帮助很大,https://github.com/tiangolo/fastapi/issues/1693#issuecomment-665833384
你不能在自己的函数中使用 Depends,它必须在 FastAPI 函数中,主要是路由。但是,当该函数也是依赖项时,您可以在自己的函数中使用 Depends,因此可以具有一系列函数。
例如,一条路由使用 Depends 来解析“getcurrentuser”,该路由也使用 Depends 来解析“getdb”,整个链将被解析。但是,如果您随后在不使用 Depends 的情况下调用“getcurrentuser”,它将无法解析“getdb”。
我所做的就是从路由中获取数据库会话,然后将其向下传递到每个层和函数。我相信这也是更好的设计。
| 归档时间: |
|
| 查看次数: |
30005 次 |
| 最近记录: |