一文搞定FastAPI中的查询参数
作者: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模型作为查询参数的使用。通过这些方法,可以灵活地处理和传递查询参数,实现更丰富的功能需求。
到此这篇关于一文搞定FastAPI中的查询参数的文章就介绍到这了,更多相关FastAPI查询参数内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!