FastHTML中是否存在类似FastAPI Depends的依赖注入机制?
FastHTML中的依赖注入实现方式
FastHTML提供了和FastAPI Depends等效的依赖注入能力,语法上更简洁,主要有两种实现方式:
1. 直接在路由函数参数中声明依赖
将依赖函数作为参数的默认值传入,FastHTML会自动执行该函数并注入结果:
from fasthtml import FastHTML, Request from sqlalchemy.orm import Session # 定义数据库会话依赖 def get_db(): db = Session() try: yield db finally: db.close() app = FastHTML() @app.get("/depends_test") def getdbtest(req: Request, db: Session = get_db()): return db.query(Token).all()
2. 通过路由装饰器的deps参数批量指定依赖
如果需要给多个路由共享同一组依赖,可以在装饰器中用deps参数声明,FastHTML会自动解析并注入对应类型的参数:
@app.get("/depends_test", deps=[get_db]) def getdbtest(req: Request, db: Session): return db.query(Token).all()
两种方式都支持生成器模式的依赖函数(如上述get_db中的yield),用于资源的自动清理,行为和FastAPI的Depends完全一致。
内容的提问来源于stack exchange,提问作者Ximo Dante
相关产品推荐
相关产品推荐

