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

.NET Core动态构建Swagger:选中单API时仅展示其Swagger页面

需求说明

我有一个API列表,当选中其中某一个API时,希望仅展示该API对应的Swagger页面。

API列表选择界面

实现步骤

1. 给API分组

在每个控制器上添加[ApiExplorerSettings(GroupName = "分组名称")]特性,把不同API归类到对应分组:

[ApiController]
[Route("api/users")]
[ApiExplorerSettings(GroupName = "用户管理API")]
public class UsersController : ControllerBase
{
    // 你的API方法
}

[ApiController]
[Route("api/orders")]
[ApiExplorerSettings(GroupName = "订单管理API")]
public class OrdersController : ControllerBase
{
    // 你的API方法
}

2. 修改Program.cs中的Swagger配置

更新Swagger和SwaggerUI配置,让它按分组生成独立文档,并提供分组选择功能:

if (app.Environment.IsDevelopment())
{
    app.UseSwagger(options =>
    {
        // 自定义Swagger文档路由格式,每个分组对应独立的JSON文件
        options.RouteTemplate = "swagger/{documentName}/swagger.json";
    });

    // 获取系统中所有API分组
    var apiGroups = app.Services.GetRequiredService<IApiDescriptionGroupCollectionProvider>()
        .ApiDescriptionGroups.Items.Select(g => g.GroupName);

    app.UseSwaggerUI(options =>
    {
        // 为每个分组添加Swagger文档端点
        foreach (var groupName in apiGroups)
        {
            options.SwaggerEndpoint($"/swagger/{groupName}/swagger.json", groupName);
        }

        // 开启深度链接,选中分组后URL会保留状态,刷新页面不会重置
        options.EnableDeepLinking();
    });
}

效果说明

配置完成后,SwaggerUI顶部会出现下拉菜单,显示所有定义的API分组。选中某个分组后,页面就只会展示该分组下的所有API文档,完全匹配需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 06:01:44