你好,我是 shengjk1,多年大厂经验,努力构建 通俗易懂的、好玩的编程语言教程。 欢迎关注!你会有如下收益:
- 了解大厂经验
- 拥有和大厂相匹配的技术等
希望看什么,评论或者私信告诉我!
一、查询参数定义
路径操作函数中,不是路径参数的其他参数,就是查询参数。比如:
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模型作为查询参数的使用。通过这些方法,可以灵活地处理和传递查询参数,实现更丰富的功能需求。
网友评论