當前位置:編程學習大全網 - 源碼下載 - FastAPI 依賴註入詳解:生成依賴樹

FastAPI 依賴註入詳解:生成依賴樹

在添加 APIRoute 節點時,會對endpoint進行解析,生成 依賴樹 , get_dependant 便是解析出endpoint的依賴樹的函數。

這部分在之前源碼解析中講過,但是當時的理解並不深刻。這次讓我們來認真剖析這部分

get_dependant 不止被endpoint使用,其依賴項和子依賴都會使用,其為遞歸函數。

開頭生成壹個 Dependant節點對象 ,等待下面加工,最終被返回。其形成的是壹個 樹狀結構

接下來把該節點的參數都抓出來,逐個分析。

首先判斷是否為 Depends() 項,如果是,則生成子依賴。下面是生成子依賴的流程。

拿出Depends中的依賴內容,如果沒有就用註解來充當。即 user: User = Depends() 這種形式可以被允許。

接下來是對安全相關的處理。我們可以看到,中間又調用了 get_dependant ,參數包含了 name 和 security_scopes 。endpoint的根節點傳參不包含這兩項。

如果不是 Depends 參數,則首先默認當成查詢參數query,並生成ModelField字段。

如果其為路徑參數,則重新生成ModelField字段。再整合到dependant的參數列表中

不是路徑參數,但是標準的查詢參數

Query()和Header()兩種情況

當上述條件都不滿足,則可以斷言為Body()字段。

就此,壹個APIRoute的依賴樹便生成了

下章說說如何使用依賴樹

  • 上一篇:30元的幸運盒子售貨機有人開出了高價值的商品嗎?
  • 下一篇:補碼,原碼,反碼什麽的。有什麽作用啊!
  • copyright 2024編程學習大全網