Python FastAPI 多參數(shù)傳遞的示例詳解
Python FastAPI請(qǐng)求參數(shù)傳遞
FastAPI多參數(shù)傳遞類型
FastAPI通過模板來匹配URL中的參數(shù)列表,大致有如下三類方式傳遞參數(shù):
- 路徑參數(shù)傳遞:獲取自定義的構(gòu)造URL中的參數(shù)
- GET參數(shù)傳遞:獲取一個(gè)URL后面帶的
?param1=1¶m2=2這種類型參數(shù) - POST參數(shù)傳遞:獲取POST請(qǐng)求中的參數(shù),因?yàn)镻OST是加密的,因此更加安全,但有額外開銷,測(cè)試API使用額外工具或插件或者自己寫Request等
路徑多參數(shù)傳遞
- 訪問url:
- http://127.0.0.1:8001/uname=goudan/sex=1/age=18
- 匹配模板:
- http://127.0.0.1:8001/uname=值1/sex=值2/age=值3
- 對(duì)應(yīng)API代碼
import uvicorn
from fastapi import FastAPI
#構(gòu)造FastAPI實(shí)例
app = FastAPI(name="mutilParam")
""""
路徑多參數(shù)傳遞
訪問url:
http://127.0.0.1:8001/uname=goudan/sex=1/age=18
匹配模板:
http://127.0.0.1:8001/uname=值1/sex=值2/age=值3
對(duì)應(yīng)API代碼:
"""
@app.get("/uname={uname}/sex={sex}/age={age}")
async def api1(uname: str, sex, age: str):
return {
"uname": uname,
"sex": sex,
"age": age,
}GET請(qǐng)求多參數(shù)傳遞
訪問url:http://127.0.0.1:8001/get?uname=goudan&sex=1&age=18
匹配模板:http://127.0.0.1:8001/get?uname=值1&sex=值2&age=值3
對(duì)應(yīng)API代碼
import uvicorn
from fastapi import FastAPI
#構(gòu)造FastAPI實(shí)例
app = FastAPI(name="mutilParam")
""""
GET請(qǐng)求多參數(shù)傳遞
訪問url:
http://127.0.0.1:8001/get?uname=goudan&sex=1&age=18
匹配模板:
http://127.0.0.1:8001/get?uname=值1&sex=值2&age=值3
對(duì)應(yīng)API代碼:
"""
@app.get("/get")
async def api2(uname=Query(None), sex=Query(...), age=Query(None)):
return {
"uname": uname,
"sex": sex,
"age": age,
}注意:
參數(shù)里uname=Query(None):
uname對(duì)應(yīng)著傳入U(xiǎn)RL里的?uname=xxx
Query()是導(dǎo)的包from fastapi import Query
Query(None)里的None是默認(rèn)值,可以是任意值,當(dāng)URL里沒有傳入這個(gè)參數(shù)時(shí),就會(huì)用默認(rèn)值替代;當(dāng)None為…,則表示為必須傳遞參數(shù)
POST請(qǐng)求多參數(shù)傳遞
- 訪問url:
http://127.0.0.1:8001/post
body中參數(shù):{“uname”:“goudan”,“sex”:“1”,“age”:“18”}
- 匹配模板:
http://127.0.0.1:8001/post
- body中參數(shù):{uname=值1, sex=值2, age=值3}
對(duì)應(yīng)API代碼
import uvicorn
from fastapi import FastAPI
#構(gòu)造FastAPI實(shí)例
app = FastAPI(name="mutilParam")
""""
POST請(qǐng)求多參數(shù)傳遞
"""
@app.post("/post")
async def api3(uname=Body(None), sex=Body(...), age=Body(None)):
return {
"uname": uname,
"sex": sex,
"age": age,
}注意:
Post參數(shù)傳遞幾乎和GET相似,就是將Query替換成來寫,參數(shù)里uname=Body(None):
Body()是導(dǎo)的包from fastapi import Body
Body的寫法與用法和Query相同,括號(hào)里是默認(rèn)值
uname=Body(None)里的None是默認(rèn)值,可以是任意值,當(dāng)URL里沒有傳入這個(gè)參數(shù)時(shí),就會(huì)用默認(rèn)值替代;當(dāng)None為…,則表示為必須傳遞參數(shù)
案例完整代碼
三種參數(shù)傳遞API的完整代碼如下:
import uvicorn
from fastapi import FastAPI
from fastapi import Query
from fastapi import Body
#構(gòu)造FastAPI實(shí)例
app = FastAPI(name="mutilParam")
""""
路徑多參數(shù)傳遞
訪問url:
http://127.0.0.1:8001/uname=goudan/sex=1/age=18
匹配模板:
http://127.0.0.1:8001/uname=值1/sex=值2/age=值3
對(duì)應(yīng)API代碼:
"""
@app.get("/uname={uname}/sex={sex}/age={age}")
async def api1(uname: str, sex, age: str):
return {
"uname": uname,
"sex": sex,
"age": age,
}
""""
GET請(qǐng)求多參數(shù)傳遞
訪問url:
http://127.0.0.1:8001/get?uname=goudan&sex=1&age=18
匹配模板:
http://127.0.0.1:8001/get?uname=值1&sex=值2&age=值3
對(duì)應(yīng)API代碼:
參數(shù)里uname=Query(None):
uname對(duì)應(yīng)著傳入U(xiǎn)RL里的?uname=xxx
Query()是導(dǎo)的包from fastapi import Query
Query(None)里的None是默認(rèn)值,可以是任意值,當(dāng)URL里沒有傳入這個(gè)參數(shù)時(shí),就會(huì)用默認(rèn)值替代;當(dāng)None為...,則表示為必須傳遞參數(shù)
"""
@app.get("/get")
async def api2(uname=Query(None), sex=Query(...), age=Query(None)):
return {
"uname": uname,
"sex": sex,
"age": age,
}
""""
POST請(qǐng)求多參數(shù)傳遞
訪問url:
http://127.0.0.1:8001/post
{"uname":"goudan","sex":"1","age":"18"}
匹配模板:
http://127.0.0.1:8001/post
{"uname":"xxx","age":"x"}
對(duì)應(yīng)API代碼:
Post參數(shù)傳遞幾乎和GET相似,就是將Query替換成來寫:
參數(shù)里uname=Body(None):
Body()是導(dǎo)的包from fastapi import Body
Body的寫法與用法和Query相同,括號(hào)里是默認(rèn)值
uname=Body(None)里的None是默認(rèn)值,可以是任意值,當(dāng)URL里沒有傳入這個(gè)參數(shù)時(shí),就會(huì)用默認(rèn)值替代;當(dāng)None為...,則表示為必須傳遞參數(shù)
"""
@app.post("/post")
async def api3(uname=Body(None), sex=Body(...), age=Body(None)):
return {
"uname": uname,
"sex": sex,
"age": age,
}
#主函數(shù)
if __name__ == '__main__':
#啟動(dòng)服務(wù)
uvicorn.run(app='MutilParamOfAPI:app', host="127.0.0.1", port=8001, reload=False)
案例完整測(cè)試
啟動(dòng)服務(wù)
在完整代碼案例中任何位置—>右鍵—>Run MutilParamOfAPI—>信息如下:
/Users/liyadong/PycharmProjects/MyAPI/MutilParamOfAPI.py INFO: Started server process [31526] INFO: Waiting for application startup. INFO: Application startup complete. INFO: Uvicorn running on http://127.0.0.1:8001 (Press CTRL+C to quit)
訪問測(cè)試
- 路徑多參數(shù)測(cè)試
瀏覽器訪問輸入地址欄如下:
http://127.0.0.1:8001/uname=goudan/sex=1/age=18
- 瀏覽器頁(yè)面信息如下:
{"uname":"goudan","sex":"1","age":"18"}
{"uname":"goudan","sex":"1","age":"18"}GET請(qǐng)求多參數(shù)測(cè)試
- 瀏覽器訪問輸入地址:http://127.0.0.1:8001/get?uname=goudan&sex=1&age=18
瀏覽器頁(yè)面信息如下:
{"uname":"goudan","sex":"1","age":"18"}POST請(qǐng)求多參數(shù)測(cè)試

到此測(cè)試就完畢了,關(guān)于可傳參數(shù)和必傳參數(shù),大家自行減少參數(shù)鍵值對(duì)即可。
參考資料:
https://blog.csdn.net/weixin_35757704/article/details/123392281
到此這篇關(guān)于Python FastAPI 多參數(shù)傳遞的文章就介紹到這了,更多相關(guān)Python FastAPI 多參數(shù)傳遞內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
如何使用 Pylint 來規(guī)范 Python 代碼風(fēng)格(來自IBM)
本文通過詳細(xì)的理論介紹和簡(jiǎn)單易懂的實(shí)例全面介紹了 Python 代碼分析工具 Pylint。相信讀者看完后一定可以輕松地將 Pylint 運(yùn)用到自己的開發(fā)工程中2018-04-04
Python采集數(shù)據(jù)保存CSV文件出現(xiàn)內(nèi)容亂碼的解決方法
這篇文章主要為大家詳細(xì)介紹了如何解決Python中保存CSV文件內(nèi)容亂碼的問題,并提供詳細(xì)的示例代碼以更好地理解和解決這個(gè)問題,希望對(duì)大家有所幫助2024-03-03
詳解Golang 與python中的字符串反轉(zhuǎn)
這篇文章主要介紹了詳解Golang 與python中的字符串反轉(zhuǎn)的相關(guān)資料,這里提供了實(shí)現(xiàn)的實(shí)例以便大家學(xué)習(xí)理解,需要的朋友可以參考下2017-07-07
Pytorch中的自動(dòng)求梯度機(jī)制和Variable類實(shí)例
今天小編就為大家分享一篇Pytorch中的自動(dòng)求梯度機(jī)制和Variable類實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2020-02-02
python面向?qū)ο髮?shí)現(xiàn)名片管理系統(tǒng)文件版
這篇文章主要為大家詳細(xì)介紹了python面向?qū)ο髮?shí)現(xiàn)名片管理系統(tǒng)文件版,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-04-04

