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
相关产品推荐
相关产品推荐

