You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

FastAPI-Swagger UI文档未将列表数组渲染为查询参数求助

解决FastAPI列表查询参数在Swagger UI中无法显示多选项的问题

你的接口能正常处理?q=foo&q=bar这类多值查询参数,但Swagger UI却将其识别为字符串输入,核心原因是参数注解写法导致OpenAPI文档生成时未正确识别多值属性。

以下是两种可行的调整方案:

  • 方案1:修正Annotated中Query的默认值写法
    将默认值通过Query的default参数传递,移除后面的= None赋值:

    @app.get("/items/")
    async def read_items(q: Annotated[List[str] | None, Query(default=None)]):
        query_items = {"q": q}
        return query_items
    
  • 方案2:显式指定explode参数
    如果方案1无效,在Query中添加explode=True强制标记为多值参数:

    @app.get("/items/")
    async def read_items(q: Annotated[List[str] | None, Query(default=None, explode=True)]):
        query_items = {"q": q}
        return query_items
    

另外建议升级到最新版FastAPI,旧版本可能存在Swagger UI渲染的兼容问题,执行命令:

pip install --upgrade fastapi

修改后重启服务,打开Swagger UI就能看到q参数变为可添加多个值的输入框了。

内容的提问来源于stack exchange,提问作者moth

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.02 04:43:18