路径操作函数中,不是路径参数的其他参数,就是查询参数。比如:
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 都不是路径参数,所以它就是查询参数。
方便给 路径操作函数 传参
查询参数,一般是在 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)
此时 item_id
和 item_name
都是必需的,URL必须传这两个参数。启动程序,然后在浏览器中访问 http://127.0.0.1:8001/items?item_id=1&item_name=xiaoming,响应为:
{"item_id":1,"item_name":"xiaoming"}
查询参数可以设置默认值,如:item_name
默认值为 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)
访问 http://127.0.0.1:8001/items?item_id=1&item_name=xiaoming 和访问 http://127.0.0.1:8001/items?item_id=1 他们的结果都是一样的。因为URL 中不设置 item_name
的值,它会用默认值来填充。
查询参数可以设置为可选参数,如 item_name=None
可选参数的意思:URL中可以不包含这个参数,属于可有可无
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)
访问 http://127.0.0.1:8001/items?item_id=1&item_name=xiaoming 响应为:
{"item_id":1,"item_name":"xiaoming"}
和访问 http://127.0.0.1:8001/items?item_id=1 响应为:
{"item_id":1}
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的结果:
{'item_id': 1, 'item': {'name': 'flow', 'price': 2.3}}
本文详细介绍了查询参数在FastAPI中的基本使用方法,包括URL拼接和必需参数、默认值、可选参数和Pydantic模型作为查询参数的使用。通过这些方法,可以灵活地处理和传递查询参数,实现更丰富的功能需求。
扫码关注腾讯云开发者
领取腾讯云代金券
Copyright © 2013 - 2025 Tencent Cloud. All Rights Reserved. 腾讯云 版权所有
深圳市腾讯计算机系统有限公司 ICP备案/许可证号:粤B2-20090059 深公网安备号 44030502008569
腾讯云计算(北京)有限责任公司 京ICP证150476号 | 京ICP备11018762号 | 京公网安备号11010802020287
Copyright © 2013 - 2025 Tencent Cloud.
All Rights Reserved. 腾讯云 版权所有