前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >一文搞定 FastAPI 查询参数

一文搞定 FastAPI 查询参数

作者头像
shengjk1
发布于 2025-05-16 05:38:49
发布于 2025-05-16 05:38:49
4100
代码可运行
举报
文章被收录于专栏:码字搬砖码字搬砖
运行总次数:0
代码可运行

一、查询参数定义

路径操作函数中,不是路径参数的其他参数,就是查询参数。比如:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
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 的 ? 后,并以 & 分割,比如:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
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_iditem_name 都是必需的,URL必须传这两个参数。启动程序,然后在浏览器中访问 http://127.0.0.1:8001/items?item_id=1&item_name=xiaoming,响应为:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
{"item_id":1,"item_name":"xiaoming"}
3.2. 默认值

查询参数可以设置默认值,如:item_name 默认值为 xiaoming

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
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中可以不包含这个参数,属于可有可无

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
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 响应为:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
{"item_id":1,"item_name":"xiaoming"}

和访问 http://127.0.0.1:8001/items?item_id=1 响应为:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
{"item_id":1}
3.4. Pydantic 模型( 请求体 )作为查询参数
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
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端:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
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的结果:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
{'item_id': 1, 'item': {'name': 'flow', 'price': 2.3}}

三、总结

本文详细介绍了查询参数在FastAPI中的基本使用方法,包括URL拼接和必需参数、默认值、可选参数和Pydantic模型作为查询参数的使用。通过这些方法,可以灵活地处理和传递查询参数,实现更丰富的功能需求。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2024-03-26,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、查询参数定义
  • 二、查询参数作用
  • 三、查询参数基本使用
    • 3.1. URL拼接和必需参数
    • 3.2. 默认值
    • 3.3. 可选参数
    • 3.4. Pydantic 模型( 请求体 )作为查询参数
  • 三、总结
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档