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

FastAPI如何将查询参数分组放入可折叠菜单优化接口文档

实现方案

1. 核心原理

FastAPI 默认使用的Swagger UI 支持通过 OpenAPI 自定义扩展字段 x-groupParameters 实现参数分组,分组后的参数会自动渲染为可折叠的独立菜单,完全匹配你的需求。

2. 改造generate_params函数

你不需要改动原有参数生成逻辑,只需要在返回配置中新增分组规则即可,示例代码如下:

from typing import List, Dict
from pydantic import BaseModel

def generate_params(schema: BaseModel) -> Dict:
    # 此处保留你原有生成参数的逻辑,得到所有符合OpenAPI规范的参数列表
    all_params = 你原有逻辑生成的参数列表

    # 新增:按前缀分类参数
    red_params = []
    green_params = []
    blue_params = []
    other_params = []
    for param in all_params:
        param_name = param["name"]
        if param_name.startswith("RED_"):
            red_params.append(param)
        elif param_name.startswith("GREEN_"):
            green_params.append(param)
        elif param_name.startswith("BLUE_"):
            blue_params.append(param)
        else:
            other_params.append(param)
    
    # 合并最终参数列表,顺序可根据需求调整
    final_params = red_params + green_params + blue_params + other_params

    # 新增:定义参数分组配置
    groups = [
        {
            "name": "红色系参数",
            "parameters": [p["name"] for p in red_params],
            "defaultExpanded": False # 配置默认是否展开,False为默认折叠
        },
        {
            "name": "绿色系参数",
            "parameters": [p["name"] for p in green_params],
            "defaultExpanded": False
        },
        {
            "name": "蓝色系参数",
            "parameters": [p["name"] for p in blue_params],
            "defaultExpanded": False
        }
    ]

    #  返回配置,新增分组扩展字段
    return {
        "parameters": final_params,
        "x-groupParameters": groups
    }

3. 接口定义保持不变

原有接口代码不需要做任何调整,继续按原有方式使用openapi_extra即可:

@app.get("/COLORS/", openapi_extra=generate_params(schemas.COLORS))
async def colors(request: Request):
    return handle_request()

4. 效果验证

启动服务后打开Swagger UI(默认地址为http://你的服务地址/docs),即可看到三个前缀对应的参数分别在独立的可折叠菜单中,未分组的其他参数会默认展示在公共区域。

适配说明

如果你使用的是Redoc文档而非默认的Swagger UI,只需要把分组配置改为给每个参数新增x-group字段即可,示例:param["x-group"] = "红色系参数",Redoc会自动按该字段对参数做可折叠分组。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 13:15:03