您好,登錄后才能下訂單哦!
本篇內容主要講解“python中fastapi怎么設置查詢參數可選或必選”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學習“python中fastapi怎么設置查詢參數可選或必選”吧!
前言:
在fastapi中,我們定義的查詢參數是可以設置成:必選參數 or 可選參數。
z只要給查詢參數的默認值設置為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是可以區分他們的。
當你為查詢參數設置默認值時,則該參數在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怎么設置查詢參數可選或必選”有了更深的了解,不妨來實際操作一番吧!這里是億速云網站,更多相關內容可以進入相關頻道進行查詢,關注我們,繼續學習!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。