FastAPI 中具有不同路徑但相同路徑參數的多個API 端點
在FastAPI 中,定義具有不同路徑但相同路徑參數的API 端點可以透過依序宣告端點來實現。但是,當觸發具有共享路徑參數的其他端點時,呼叫路由器中聲明的第一個端點而不是預期的端點時,會出現一個常見問題。
出現此問題是因為 FastAPI 依照端點出現的順序評估端點在路由器中。因此,如果先定義具有共用路徑參數 (/project/{project_id}/...) 的端點,則無論附加路徑參數為何,都會先對其進行評估並處理對該路徑的所有請求。
解決方案:
要解決此問題,請確保在具有共享路徑參數的端點之前聲明具有不同路徑參數的端點。這可確保根據提供的特定路徑觸發正確的端點。
例如,考慮以下修改後的路由器:
<code class="python"># GET API Endpoint 2 @router.get("/project/details/{project_id}") # ... # GET API Endpoint 3 @router.get("/project/metadata/{project_id}") # ... # GET API Endpoint 1 @router.get("/project/{project_id}/{employee_id}") # ...</code>
在此更新的路由器中,具有唯一路徑的端點首先聲明參數(/project/details/{project_id} 和/ project/metadata/{project_id})。這樣,當這些端點被觸發時,對應的控制器方法就會被正確執行,解決了控制器執行不匹配的問題。
以上是如何在 FastAPI 中處理具有不同路徑但具有相同路徑參數的多個 API 端點?的詳細內容。更多資訊請關注PHP中文網其他相關文章!