FastAPI 依賴注入系統(一) 簡介


作者:麥克煎蛋   出處:https://www.cnblogs.com/mazhiyong/ 轉載請保留這段聲明,謝謝!

 

FastAPI有一個強大並且簡單易懂的系統:依賴注入系統。

什么是"依賴注入"

"依賴注入"首先意味着在程序中我們的代碼可以聲明一些它必須依賴的項:我們稱之為dependencies,也就是依賴項。

然后,在實際運行中,FastAPI會把所有需要的依賴項提供給你的代碼,稱之為"注入"依賴項。

 

"依賴注入"非常適用於以下使用場景:

1、業務邏輯復用

2、共享數據庫連接

3、安全機制、權限校驗、角色管理等等

4、其他使用場景

所有上述使用場景,借助於"依賴注入"可以明確的提高代碼復用,減少代碼重復。

 

接下來我們看一個非常簡單的例子,了解下依賴注入系統是怎么工作的。

導入 Depends

from fastapi import Depends, FastAPI

創建依賴項

依賴項實際上是一個函數,它接收所有路徑操作函數應當接收的函數參數。

async def common_parameters(q: str = None, skip: int = 0, limit: int = 100):
    return {"q": q, "skip": skip, "limit": limit}

這里我們可以用async def或者def來聲明函數,FastAPI知道怎么來處理。

聲明依賴

在路徑操作函數的參數中使用Depends聲明依賴,與使用Body、Query等的方式相同。

@app.get("/items/")
async def read_items(commons: dict = Depends(common_parameters)):   return commons

Depends僅接收一個函數類型的參數。

調用依賴項

當一個新的請求到來的時候,實際調用流程如下:

1、調用依賴項函數(傳遞合適的參數)

2、得到依賴項函數的返回結果

3、把返回結果傳遞給路徑操作函數中的對應參數

 

完整工程實例:

from fastapi import Depends, FastAPI

app = FastAPI()


async def common_parameters(q: str = None, skip: int = 0, limit: int = 100): return {"q": q, "skip": skip, "limit": limit}


@app.get("/items/")
async def read_items(commons: dict = Depends(common_parameters)):
    return commons


@app.get("/users/")
async def read_users(commons: dict = Depends(common_parameters)):
    return commons

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM