FastAPI查詢參數列表如何以逗號分隔的形式在URL中呈現?

FastAPI查詢參數列表如何以逗號分隔的形式在URL中呈現?

fastapi 查詢參數列表的逗號分隔處理

在使用FastAPI構建API時,經常需要處理多個查詢參數的情況,例如用戶可選擇多個選項。本文探討如何處理FastAPI中列表形式的查詢參數,使其在URL中以逗號分隔的形式呈現,而非多個同名鍵值對

問題:

FastAPI的query參數默認情況下,若參數接受列表類型,用戶傳遞多個相同參數,URL中會顯示多個同名參數,例如source=manual&source=vdna。我們期望將這些參數以逗號分隔的形式呈現,例如source=manual,vdna。

解決方案:

http參數規范允許一個參數多次出現并被解析為列表,FastAPI的默認行為符合規范。如需自定義參數解析,需自行處理。主要方法如下:

方法一:修改參數類型為字符串,自行解析

將query參數類型聲明為str,在函數內部使用split()函數解析逗號分隔的字符串。例如,將source參數類型改為Optional[str],并在函數中使用以下代碼:

source: Optional[str] = Query(None, description="請用`,`分割多個參數,如`Manual,vDNA,text-match`") # ... parsed_source = source.split(",") if source else [] # ...

此方法簡單直接,易于理解和實現。

方法二:自定義依賴項進行解析和驗證

此方法更靈活,可實現更復雜的解析邏輯和驗證規則。通過自定義依賴項處理查詢參數,并按需解析。本文為避免URL地址,不再贅述具體實現細節,可參考相關issue和文檔。此方法適用于需要復雜邏輯或自定義驗證規則的情況。

通過以上兩種方法,可有效解決FastAPI中列表類型查詢參數的逗號分隔問題,使API接口更簡潔易用。

? 版權聲明
THE END
喜歡就支持一下吧
點贊6 分享