一、查询参数定义
路径操作函数中,不是路径参数的其他参数,就是查询参数。比如:
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 都不是路径参数,所以它就是查询参数。
二、查询参数作用
方便给 路径操作函数 传参
三、查询参数基本使用
3.1. url拼接和必需参数
查询参数,一般是在 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"}
3.2. 默认值
查询参数可以设置默认值,如: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 的值,它会用默认值来填充。
3.3. 可选参数
查询参数可以设置为可选参数,如 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}
3.4. pydantic 模型( 请求体 )作为查询参数
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模型作为查询参数的使用。通过这些方法,可以灵活地处理和传递查询参数,实现更丰富的功能需求。
到此这篇关于一文搞定fastapi中的查询参数的文章就介绍到这了,更多相关fastapi查询参数内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网!
发表评论