python中fastapi設(shè)置查詢(xún)參數(shù)可選或必選
前言:
在fastapi中,我們定義的查詢(xún)參數(shù)是可以設(shè)置成:必選參數(shù) or 可選參數(shù)。
可選查詢(xún)參數(shù)
- 只要給查詢(xún)參數(shù)的默認(rèn)值設(shè)置為
None,表示該查詢(xún)參數(shù)是可選參數(shù)。
?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補(bǔ)充:此時(shí)路徑操作函數(shù)內(nèi)的參數(shù)有兩個(gè),一個(gè)是路徑參數(shù)
item_id,一個(gè)是查詢(xún)參數(shù)q,fastapi是可以區(qū)分他們的。
必選查詢(xún)參數(shù)
- 當(dāng)你為查詢(xún)參數(shù)設(shè)置默認(rèn)值時(shí),則該參數(shù)在URL中不是必須的。
- 如果你不想添加默認(rèn)值,而只是想使該參數(shù)成為可選的,則將默認(rèn)值設(shè)置為
None。 - 但當(dāng)你想讓一個(gè)查詢(xún)參數(shù)成為必需的,不聲明任何默認(rèn)值就可以.
- 比如:這里的查詢(xún)參數(shù)
needy是類(lèi)型為str的必需查詢(xún)參數(shù)。
?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中沒(méi)有查詢(xún)參數(shù)
needy,則報(bào)錯(cuò)
?{
? ? "detail": [
? ? ? ? {
? ? ? ? ? ? "loc": [
? ? ? ? ? ? ? ? "query",
? ? ? ? ? ? ? ? "needy"
? ? ? ? ? ? ],
? ? ? ? ? ? "msg": "field required",
? ? ? ? ? ? "type": "value_error.missing"
? ? ? ? }
? ? ]
?}可選和必選參數(shù)共存
- 也可以定義一些參數(shù)為必需的,一些具有默認(rèn)值,而某些則完全是可選的
- 此時(shí):
itme_id是路徑參數(shù),needy是必選路徑參數(shù),skip是有默認(rèn)值必選查詢(xún)參數(shù),limit是可選查詢(xún)參數(shù)。
?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為可選參數(shù)做類(lèi)型提示
- 比如一個(gè)可選的參數(shù)
q,如有該參數(shù)時(shí),他的類(lèi)型是整型,此時(shí)定義類(lèi)型提示如下 - 使用
typing模塊下的Union做類(lèi)型提示,Union[int, None]表示類(lèi)型是int或者None - 此時(shí)對(duì)于URL:
http://127.0.0.1:8000/items/12?q=12,參數(shù)q就會(huì)自動(dòng)轉(zhuǎn)化為數(shù)字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補(bǔ)充1:
- 可能為空的情況做類(lèi)型提示,一般使用一個(gè)比
typing.Union更加方便的類(lèi)型:typing.Optional - 因?yàn)椋?code>Optional[X] is equivalent to Union[X, None]
- 所以,上面的類(lèi)似等價(jià)于
q: Optional[int] = None\
補(bǔ)充2:
- 只要給查詢(xún)參數(shù)默認(rèn)值
None就表示它是可選查詢(xún)參數(shù),和類(lèi)型提示無(wú)關(guān)。 - 類(lèi)型提示的功能在于如果該值存在是他應(yīng)該是什么類(lèi)型的變量并做類(lèi)型轉(zhuǎn)換和校驗(yàn)。
到此這篇關(guān)于python中fastapi設(shè)置查詢(xún)參數(shù)可選或必選的文章就介紹到這了,更多相關(guān)python fastapi 內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Python實(shí)現(xiàn)一個(gè)服務(wù)器監(jiān)聽(tīng)多個(gè)客戶(hù)端請(qǐng)求
這篇文章主要為大家詳細(xì)介紹了Python如何實(shí)現(xiàn)一個(gè)服務(wù)器監(jiān)聽(tīng)多個(gè)客戶(hù)端請(qǐng)求,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-04-04
Python jieba庫(kù)分詞模式實(shí)例用法
在本篇文章里小編給大家分享的是一篇關(guān)于Python jieba庫(kù)分詞模式實(shí)例用法,有興趣的朋友們可以學(xué)習(xí)參考下。2021-01-01
Python爬蟲(chóng)beautifulsoup4常用的解析方法總結(jié)
今天小編就為大家分享一篇關(guān)于Python爬蟲(chóng)beautifulsoup4常用的解析方法總結(jié),小編覺(jué)得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來(lái)看看吧2019-02-02
linux環(huán)境中沒(méi)有網(wǎng)絡(luò)怎么下載python
在本篇文章里小編給大家分享了關(guān)于linux環(huán)境中沒(méi)有網(wǎng)絡(luò)怎么下載python的相關(guān)知識(shí)點(diǎn)內(nèi)容,需要的朋友們參考下。2019-07-07
對(duì)pytorch網(wǎng)絡(luò)層結(jié)構(gòu)的數(shù)組化詳解
今天小編就為大家分享一篇對(duì)pytorch網(wǎng)絡(luò)層結(jié)構(gòu)的數(shù)組化詳解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2018-12-12
總結(jié)幾個(gè)非常實(shí)用的Python庫(kù)
Python一直被自稱(chēng)“batteries included”,就是因?yàn)閮?nèi)置了許多非常有用的模塊,無(wú)需額外安裝和配置,即可直接使用. 除了內(nèi)建的模塊外,Python還有大量的第三方模塊,直接使用pip安裝即可使用.下面給大家簡(jiǎn)單介紹幾個(gè)Python非常實(shí)用的自帶庫(kù)和第三方庫(kù),需要的朋友可以參考下2021-06-06
pandas中遍歷dataframe的每一個(gè)元素的實(shí)現(xiàn)
這篇文章主要介紹了pandas中遍歷dataframe的每一個(gè)元素的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-10-10
在langchain中對(duì)大模型的輸出進(jìn)行格式化實(shí)現(xiàn)
這篇文章主要為大家介紹了在langchain中對(duì)大模型的輸出進(jìn)行格式化實(shí)現(xiàn)示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-11-11
基于Python實(shí)現(xiàn)人工智能算法的方法詳解
Python已經(jīng)成為了機(jī)器學(xué)習(xí)領(lǐng)域最受歡迎的編程語(yǔ)言之一,Python的簡(jiǎn)潔性和易用性使其成為了開(kāi)發(fā)人員和數(shù)據(jù)科學(xué)家的首選語(yǔ)言,在本文中,我們將探討如何使用Python實(shí)現(xiàn)人工智能算法,感興趣的小伙伴跟著小編一起來(lái)探討吧2023-06-06

