如何通过Postman向FastAPI的GET接口传递数组参数
FastAPI列表查询参数接收问题解决
你的问题出在参数定义不规范,FastAPI无法自动识别未指定类型和装饰器的列表查询参数,导致ids始终为None。
修复步骤
- 导入FastAPI的
Query工具类 - 修改
ids参数定义,明确元素类型并使用Query装饰器标记
修改后的代码示例
from fastapi import Query, Request # 导入你的路由、响应模型等依赖 from your_module import router, ApiResponseMultiple, MyObject @router.get("/", response_model=ApiResponseMultiple[MyObject], response_model_exclude_none=True) async def get_objs( request: Request, ids: list[int] = Query(...) # 明确类型+标记为查询列表参数 ): """Get stuffs""" print(ids) # 现在会正确输出[1,2] # 后续业务逻辑...
为什么之前的传参无效?
FastAPI需要显式声明查询参数为列表类型:
- 仅写
ids: list无法让框架识别这是需要解析的查询列表参数 - 添加
Query(...)后,FastAPI才会自动处理多值或逗号分隔的查询参数格式 - 指定
list[int]既可以做类型校验,也能确保参数被正确解析为整数列表
Postman正确传参方式
两种方式都支持:
- 多键值对:在Params面板添加两条
ids参数,值分别填1和2,自动生成ids=1&ids=2 - 逗号分隔:在Params面板添加一条
ids参数,值填1,2,FastAPI会自动解析为列表
内容的提问来源于stack exchange,提问作者Frank Conry
相关产品推荐
相关产品推荐

