一文搞定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)文章
Django+Ajax異步刷新/定時(shí)自動(dòng)刷新實(shí)例詳解
AJAX是前端技術(shù)的集合,包括JavaScript、XML、HTML、CSS等,下面這篇文章主要給大家介紹了關(guān)于Django+Ajax異步刷新/定時(shí)自動(dòng)刷新的相關(guān)資料,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下2022-10-10tf.truncated_normal與tf.random_normal的詳細(xì)用法
本篇文章主要介紹了tf.truncated_normal與tf.random_normal的詳細(xì)用法,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2018-03-03利用python檢查磁盤空間使用情況的代碼實(shí)現(xiàn)
本文將向讀者展示如何利用Python編寫自動(dòng)化腳本,以檢查磁盤空間使用情況,無(wú)論你是經(jīng)驗(yàn)豐富的系統(tǒng)管理員,還是對(duì)Python自動(dòng)化充滿興趣的開(kāi)發(fā)者,本文都將為你提供實(shí)用的腳本示例和詳細(xì)的解析步驟,幫助你快速掌握磁盤空間監(jiān)控的自動(dòng)化方法,需要的朋友可以參考下2024-08-08導(dǎo)入tensorflow時(shí)報(bào)錯(cuò):cannot import name ''abs''的解決
這篇文章主要介紹了導(dǎo)入tensorflow時(shí)報(bào)錯(cuò):cannot import name 'abs'的解決,文中介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-10-10pygame實(shí)現(xiàn)井字棋之第二步邏輯實(shí)現(xiàn)
這篇文章主要介紹了pygame實(shí)現(xiàn)井字棋之第二步邏輯實(shí)現(xiàn),文中有非常詳細(xì)的代碼示例,對(duì)正在學(xué)習(xí)python的小伙伴們有非常好的幫助,需要的朋友可以參考下2021-05-05Python讀取xlsx文件的實(shí)現(xiàn)方法
這篇文章主要介紹了Python讀取xlsx文件的實(shí)現(xiàn)方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-07-07Python生成ubuntu apt鏡像地址實(shí)現(xiàn)
本文主要介紹了Python生成ubuntu apt鏡像地址實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2023-05-05聊聊python中的load、loads實(shí)現(xiàn)反序列化的問(wèn)題
在python自動(dòng)化中,我們傳遞一些參數(shù)是需要從文件中讀取過(guò)來(lái)的,讀取過(guò)來(lái)的字典并非python對(duì)象數(shù)據(jù)類型而是string類型。本文給大家分享python中的load、loads實(shí)現(xiàn)反序列化的問(wèn)題,感興趣的朋友一起看看吧2021-10-10