作者:麥克煎蛋 出處:https://www.cnblogs.com/mazhiyong/ 轉載請保留這段聲明,謝謝!
目前為止,我們看到的依賴項的聲明都是函數。實際上這只是聲明依賴項的方式之一。
依賴項只要是可調用的即可。Python類也是可調用的。因此在FastAPI中,我們可以用Python類作為依賴項。
依賴項類
我們首先把依賴項函數:
async def common_parameters(q: str = None, skip: int = 0, limit: int = 100): return {"q": q, "skip": skip, "limit": limit}
轉換成依賴項類:
class CommonQueryParams: def __init__(self, q: str = None, skip: int = 0, limit: int = 100): self.q = q self.skip = skip self.limit = limit
注意,這里我們用了__init__
方法
來實現類的初始化。並且類的初始化參數與依賴項函數完全相同。
使用依賴項類
from fastapi import Depends, FastAPI app = FastAPI() fake_items_db = [{"item_name": "Foo"}, {"item_name": "Bar"}, {"item_name": "Baz"}] class CommonQueryParams: def __init__(self, q: str = None, skip: int = 0, limit: int = 100): self.q = q self.skip = skip self.limit = limit @app.get("/items/") async def read_items(commons: CommonQueryParams = Depends(CommonQueryParams)): response = {} if commons.q: response.update({"q": commons.q}) items = fake_items_db[commons.skip : commons.skip + commons.limit] response.update({"items": items}) return response