一文搞定FastAPI中的查詢參數(shù)
一、查詢參數(shù)定義
路徑操作函數(shù)中,不是路徑參數(shù)的其他參數(shù),就是查詢參數(shù)。比如:
from fastapi import FastAPI
app = FastAPI()
@app.get( "/items" )
def read_item(item_id:int,item_name:str):
return { "item_id" : item_id,"item_name":item_name}
if __name__ == "__main__" :
import uvicorn
uvicorn.run( "quickstart.demo:app" ,reload=True ,port= 8001)
item_id,item_name 都不是路徑參數(shù),所以它就是查詢參數(shù)。
二、查詢參數(shù)作用
方便給 路徑操作函數(shù) 傳參
三、查詢參數(shù)基本使用
3.1. URL拼接和必需參數(shù)
查詢參數(shù),一般是在 URL 的 ? 后,并以 & 分割,比如:
from fastapi import FastAPI
app = FastAPI()
@app.get( "/items" )
def read_item(item_id:int,item_name:str):
return { "item_id" : item_id,"item_name":item_name}
if __name__ == "__main__" :
import uvicorn
uvicorn.run( "quickstart.demo:app" ,reload=True ,port= 8001)
此時(shí) item_id 和 item_name 都是必需的,URL必須傳這兩個(gè)參數(shù)。啟動(dòng)程序,然后在瀏覽器中訪問(wèn) http://127.0.0.1:8001/items?item_id=1&item_name=xiaoming,響應(yīng)為:
{"item_id":1,"item_name":"xiaoming"}
3.2. 默認(rèn)值
查詢參數(shù)可以設(shè)置默認(rèn)值,如:item_name 默認(rèn)值為 xiaoming
from fastapi import FastAPI
app = FastAPI()
@app.get( "/items" )
def read_item(item_id:int,item_name:str='xiaoming'):
return { "item_id" : item_id,"item_name":item_name}
if __name__ == "__main__" :
import uvicorn
uvicorn.run( "quickstart.demo:app" ,reload=True ,port= 8001)
訪問(wèn) http://127.0.0.1:8001/items?item_id=1&item_name=xiaoming 和訪問(wèn) http://127.0.0.1:8001/items?item_id=1 他們的結(jié)果都是一樣的。因?yàn)閁RL 中不設(shè)置 item_name 的值,它會(huì)用默認(rèn)值來(lái)填充。
3.3. 可選參數(shù)
查詢參數(shù)可以設(shè)置為可選參數(shù),如 item_name=None 可選參數(shù)的意思:URL中可以不包含這個(gè)參數(shù),屬于可有可無(wú)
from fastapi import FastAPI
app = FastAPI()
@app.get( "/items" )
def read_item(item_id:int,item_name:str=None):
if item_name:
return { "item_id" : item_id,"item_name":item_name}
else:
return { "item_id" : item_id}
if __name__ == "__main__" :
import uvicorn
uvicorn.run( "quickstart.demo:app" ,reload=True ,port= 8001)
訪問(wèn) http://127.0.0.1:8001/items?item_id=1&item_name=xiaoming 響應(yīng)為:
{"item_id":1,"item_name":"xiaoming"}
和訪問(wèn) http://127.0.0.1:8001/items?item_id=1 響應(yīng)為:
{"item_id":1}
3.4. Pydantic 模型( 請(qǐng)求體 )作為查詢參數(shù)
from fastapi import FastAPI
from pydantic import BaseModel
app = FastAPI()
class Item(BaseModel):
name: str
price: float
@app.put( "/items/{item_id}" )
def put_item(item_id:int,item:Item):
return { "item_id" : item_id, "item" :item}
if __name__ == "__main__" :
import uvicorn
uvicorn.run( "quickstart.demo:app" , reload=True, port=8001)
Client端:
import requests
data={ "name" : "flow" , "price" :2.3}
respone=requests.put( "http://127.0.0.1:8001/items/1" ,json=data)
print(respone.json())
respone的結(jié)果:
{'item_id': 1, 'item': {'name': 'flow', 'price': 2.3}}
三、總結(jié)
本文詳細(xì)介紹了查詢參數(shù)在FastAPI中的基本使用方法,包括URL拼接和必需參數(shù)、默認(rèn)值、可選參數(shù)和Pydantic模型作為查詢參數(shù)的使用。通過(guò)這些方法,可以靈活地處理和傳遞查詢參數(shù),實(shí)現(xiàn)更豐富的功能需求。
到此這篇關(guān)于一文搞定FastAPI中的查詢參數(shù)的文章就介紹到這了,更多相關(guān)FastAPI查詢參數(shù)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
python啟動(dòng)應(yīng)用程序和終止應(yīng)用程序的方法
今天小編就為大家分享一篇python啟動(dòng)應(yīng)用程序和終止應(yīng)用程序的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2019-06-06
C#返回當(dāng)前系統(tǒng)所有可用驅(qū)動(dòng)器符號(hào)的方法
這篇文章主要介紹了C#返回當(dāng)前系統(tǒng)所有可用驅(qū)動(dòng)器符號(hào)的方法,涉及C#操作系統(tǒng)硬件驅(qū)動(dòng)的相關(guān)技巧,需要的朋友可以參考下2015-04-04
node.js獲取參數(shù)的常用方法(總結(jié))
下面小編就為大家?guī)?lái)一篇node.js獲取參數(shù)的常用方法(總結(jié))。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-05-05
Python3下錯(cuò)誤AttributeError: ‘dict’ object has no attribute’ite
這篇文章主要跟大家介紹了關(guān)于在Python3下錯(cuò)誤AttributeError: 'dict' object has no attribute 'iteritems'的分析與解決方法,文中介紹的非常詳細(xì),對(duì)大家具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起看看吧。2017-07-07
pycharm下配置pyqt5的教程(anaconda虛擬環(huán)境下+tensorflow)
這篇文章主要介紹了pycharm下配置pyqt5的教程(anaconda虛擬環(huán)境下+tensorflow),本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-03-03
最強(qiáng)Python可視化繪圖庫(kù)Plotly詳解用法
數(shù)據(jù)分析離不開(kāi)數(shù)據(jù)可視化。Plotly 是一款用來(lái)做數(shù)據(jù)分析和可視化的在線平臺(tái),功能非常強(qiáng)大,可以在線繪制很多圖形比如條形圖、散點(diǎn)圖、餅圖、直方圖等等2021-11-11
Python學(xué)習(xí)筆記之lambda表達(dá)式用法詳解
這篇文章主要介紹了Python學(xué)習(xí)筆記之lambda表達(dá)式用法,結(jié)合實(shí)例形式詳細(xì)分析了lambda表達(dá)式的概念、功能、原理、組成及相關(guān)使用技巧,需要的朋友可以參考下2019-08-08
Django?報(bào)錯(cuò):Broken?pipe?from?('127.0.0.1',?5892
這篇文章主要介紹了Django?報(bào)錯(cuò):Broken?pipe?from?('127.0.0.1',?58924)的解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-09-09

