python中fastapi設置查詢參數可選或必選
更新時間:2022年06月06日 08:44:17 作者:??小飛牛????
這篇文章主要介紹了python中fastapi設置查詢參數可選或必選,文圍繞主題展開詳細的內容介紹,具有一定的參考價值需要的小伙伴可以參考一下
前言:
在fastapi中,我們定義的查詢參數是可以設置成:必選參數 or 可選參數。
可選查詢參數
- 只要給查詢參數的默認值設置為
None
,表示該查詢參數是可選參數。
?from fastapi import FastAPI ?? ?app = FastAPI()? ?@app.get("/items/{item_id}") ?async def read_item(item_id: str, q=None): ? ? ?data = {"item_id": item_id} ? ? ?if q: ? ? ? ? ?data["q"] = q ? ? ?return data
補充:此時路徑操作函數內的參數有兩個,一個是路徑參數
item_id
,一個是查詢參數q
,fastapi是可以區(qū)分他們的。
必選查詢參數
- 當你為查詢參數設置默認值時,則該參數在URL中不是必須的。
- 如果你不想添加默認值,而只是想使該參數成為可選的,則將默認值設置為
None
。 - 但當你想讓一個查詢參數成為必需的,不聲明任何默認值就可以.
- 比如:這里的查詢參數
needy
是類型為str
的必需查詢參數。
?from fastapi import FastAPI ?? ?app = FastAPI()? ?@app.get("/items/{item_id}") ?async def read_user_item(item_id: str, needy: str): ? ? ?item = {"item_id": item_id, "needy": needy} ? ? ?return item
- 如果在URL中沒有查詢參數
needy
,則報錯
?{ ? ? "detail": [ ? ? ? ? { ? ? ? ? ? ? "loc": [ ? ? ? ? ? ? ? ? "query", ? ? ? ? ? ? ? ? "needy" ? ? ? ? ? ? ], ? ? ? ? ? ? "msg": "field required", ? ? ? ? ? ? "type": "value_error.missing" ? ? ? ? } ? ? ] ?}
可選和必選參數共存
- 也可以定義一些參數為必需的,一些具有默認值,而某些則完全是可選的
- 此時:
itme_id
是路徑參數,needy
是必選路徑參數,skip
是有默認值必選查詢參數,limit
是可選查詢參數。
?from fastapi import FastAPI ?? ?app = FastAPI() ?@app.get("/items/{item_id}") ?async def read_user_item( ? ? ?item_id: str, needy: str, skip: int = 0, limit=None ?): ? ? ?item = {"item_id": item_id, "needy": needy, "skip": skip, "limit": limit} ? ? ?return item
為可選參數做類型提示
- 比如一個可選的參數
q
,如有該參數時,他的類型是整型,此時定義類型提示如下 - 使用
typing
模塊下的Union
做類型提示,Union[int, None]
表示類型是int
或者None
- 此時對于URL:
http://127.0.0.1:8000/items/12?q=12
,參數q
就會自動轉化為數字12
?from typing import Union? ?from fastapi import FastAPI ?app = FastAPI()? ?@app.get("/items/{item_id}") ?async def read_item(item_id: str, q: Union[int, None] = None): ? ? ?data = {"item_id": item_id} ? ? ?if q: ? ? ? ? ?data["q"] = q ? ? ?return data
補充1:
- 可能為空的情況做類型提示,一般使用一個比
typing.Union
更加方便的類型:typing.Optional
- 因為,
Optional[X] is equivalent to Union[X, None]
- 所以,上面的類似等價于
q: Optional[int] = None
\
補充2:
- 只要給查詢參數默認值
None
就表示它是可選查詢參數,和類型提示無關。 - 類型提示的功能在于如果該值存在是他應該是什么類型的變量并做類型轉換和校驗。
到此這篇關于python中fastapi設置查詢參數可選或必選的文章就介紹到這了,更多相關python fastapi 內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
如何用Python 實現全連接神經網絡(Multi-layer Perceptron)
這篇文章主要介紹了如何用Python 實現全連接神經網絡(Multi-layer Perceptron),幫助大家更好的進行機器學習,感興趣的朋友可以了解下2020-10-10關于Python?中IndexError:list?assignment?index?out?of?rang
這篇文章主要介紹了Python?中IndexError:list?assignment?index?out?of?range?錯誤解決,概述了兩個常見的列表函數,它們可以幫助我們在替換兩個列表時幫助我們處理?Python?中的索引錯誤,需要的朋友可以參考下2023-05-05