<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
FastAPI通過模板來匹配URL中的參數列,大致有如下三類方式傳遞引數:
?param1=1¶m2=2
這種型別引數import uvicorn from fastapi import FastAPI #構造FastAPI範例 app = FastAPI(name="mutilParam") """" 路徑多引數傳遞 存取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 對應API程式碼: """ @app.get("/uname={uname}/sex={sex}/age={age}") async def api1(uname: str, sex, age: str): return { "uname": uname, "sex": sex, "age": age, }
存取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
對應API程式碼
import uvicorn from fastapi import FastAPI #構造FastAPI範例 app = FastAPI(name="mutilParam") """" GET請求多引數傳遞 存取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 對應API程式碼: """ @app.get("/get") async def api2(uname=Query(None), sex=Query(...), age=Query(None)): return { "uname": uname, "sex": sex, "age": age, }
注意:
引數裡uname=Query(None):
uname對應著傳入URL裡的?uname=xxx
Query()是導的包from fastapi import Query
Query(None)裡的None是預設值,可以是任意值,當URL裡沒有傳入這個引數時,就會用預設值替代;當None為…,則表示為必須傳遞引數
http://127.0.0.1:8001/post
body中引數:{“uname”:“goudan”,“sex”:“1”,“age”:“18”}
http://127.0.0.1:8001/post
對應API程式碼
import uvicorn from fastapi import FastAPI #構造FastAPI範例 app = FastAPI(name="mutilParam") """" POST請求多引數傳遞 """ @app.post("/post") async def api3(uname=Body(None), sex=Body(...), age=Body(None)): return { "uname": uname, "sex": sex, "age": age, }
注意:
Post引數傳遞幾乎和GET相似,就是將Query替換成來寫,引數裡uname=Body(None):
Body()是導的包from fastapi import Body
Body的寫法與用法和Query相同,括號裡是預設值
uname=Body(None)裡的None是預設值,可以是任意值,當URL裡沒有傳入這個引數時,就會用預設值替代;當None為…,則表示為必須傳遞引數
三種引數傳遞API的完整程式碼如下:
import uvicorn from fastapi import FastAPI from fastapi import Query from fastapi import Body #構造FastAPI範例 app = FastAPI(name="mutilParam") """" 路徑多引數傳遞 存取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 對應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請求多引數傳遞 存取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 對應API程式碼: 引數裡uname=Query(None): uname對應著傳入URL裡的?uname=xxx Query()是導的包from fastapi import Query Query(None)裡的None是預設值,可以是任意值,當URL裡沒有傳入這個引數時,就會用預設值替代;當None為...,則表示為必須傳遞引數 """ @app.get("/get") async def api2(uname=Query(None), sex=Query(...), age=Query(None)): return { "uname": uname, "sex": sex, "age": age, } """" POST請求多引數傳遞 存取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"} 對應API程式碼: Post引數傳遞幾乎和GET相似,就是將Query替換成來寫: 引數裡uname=Body(None): Body()是導的包from fastapi import Body Body的寫法與用法和Query相同,括號裡是預設值 uname=Body(None)裡的None是預設值,可以是任意值,當URL裡沒有傳入這個引數時,就會用預設值替代;當None為...,則表示為必須傳遞引數 """ @app.post("/post") async def api3(uname=Body(None), sex=Body(...), age=Body(None)): return { "uname": uname, "sex": sex, "age": age, } #主函數 if __name__ == '__main__': #啟動服務 uvicorn.run(app='MutilParamOfAPI:app', host="127.0.0.1", port=8001, reload=False)
在完整程式碼案例中任何位置—>右鍵—>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)
瀏覽器存取輸入位址列如下:
http://127.0.0.1:8001/uname=goudan/sex=1/age=18
{"uname":"goudan","sex":"1","age":"18"} {"uname":"goudan","sex":"1","age":"18"}
瀏覽器頁面資訊如下:
{"uname":"goudan","sex":"1","age":"18"}
到此測試就完畢了,關於可傳引數和必傳引數,大家自行減少引數鍵值對即可。
參考資料:
https://blog.csdn.net/weixin_35757704/article/details/123392281
到此這篇關於Python FastAPI 多引數傳遞的文章就介紹到這了,更多相關Python FastAPI 多引數傳遞內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45