qidao123.com技术社区-IT企服评测·应用市场
标题:
FastAPI依靠注入:参数共享与逻辑复用
[打印本页]
作者:
雁过留声
时间:
2025-3-16 13:49
标题:
FastAPI依靠注入:参数共享与逻辑复用
扫描
二维码
关注或者微信搜一搜:编程智域 前端至全栈交换与成长
第一章:依靠注入核心原理
1.1 依靠树构建机制
from fastapi import Depends
def auth_service():
return OAuth2Scheme()
def db_conn(auth: dict = Depends(auth_service)):
return Database(creds=auth)
@app.get("/data")
async def get_data(conn=Depends(db_conn)):
return conn.query()
复制代码
依靠树可视化
:
graph TDget_data --> db_conn --> auth_service
1.2 作用域控制
from fastapi import Depends, FastAPI
from sqlalchemy.orm import sessionmaker
SessionLocal = sessionmaker(autocommit=False)
# 请求级作用域
def get_db():
db = SessionLocal()
try:
yield db
finally:
db.close()
# 应用级单例
cache = LRUCache(size=100)
def get_cache():
return cache
复制代码
第二章:Pydantic深度集成
2.1 动态模子注入
from pydantic import create_model
def dynamic_model(fields: dict):
return create_model('DynamicModel', **fields)
class FilterFactory:
@classmethod
def create(cls, model: BaseModel):
class QueryParams(model):
limit: int = 100
offset: int = 0
return QueryParams
@app.get("/search")
async def search(params=Depends(FilterFactory.create(User))):
return params.dict()
复制代码
2.2 校验逻辑复用
[code]from pydantic import validator, root_validatorclass GeoValidator: @classmethod def lat_validator(cls, v): if not -90
欢迎光临 qidao123.com技术社区-IT企服评测·应用市场 (https://dis.qidao123.com/)
Powered by Discuz! X3.4