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

如何在ASP.NET Core中覆盖默认路由?Swagger文档路由修改问题

解决方案:用DocumentFilter清空端点路径,保留数据契约

要实现只展示数据契约(请求/响应模型)、隐藏所有端点的需求,直接用DocumentFilter修改Swagger文档的核心结构即可,之前没找到方法可能是没触碰到Paths集合的修改逻辑。

1. 实现自定义DocumentFilter

创建一个过滤器类,直接清空Swagger文档里的所有端点路径,同时保留Components.Schemas(也就是你的数据契约):

using Microsoft.OpenApi.Models;
using Swashbuckle.AspNetCore.SwaggerGen;

public class HideEndpointsDocumentFilter : IDocumentFilter
{
    public void Apply(OpenApiDocument swaggerDoc, DocumentFilterContext context)
    {
        // 清空所有端点路径,只保留数据契约
        swaggerDoc.Paths.Clear();
        
        // 可选:如果需要只保留特定模型,可在这里筛选Schemas
        // var targetSchemas = new List<string> { "UserDto", "OrderRequest" };
        // swaggerDoc.Components.Schemas = swaggerDoc.Components.Schemas
        //     .Where(kv => targetSchemas.Contains(kv.Key))
        //     .ToDictionary(kv => kv.Key, kv => kv.Value);
    }
}

2. 注册过滤器

在Startup.cs(或Program.cs,.NET 6+)的Swagger配置中添加这个过滤器:

services.AddSwaggerGen(options =>
{
    // 其他Swagger配置(比如文档标题、版本等)...
    options.DocumentFilter<HideEndpointsDocumentFilter>();
});

效果说明

配置完成后,Swagger UI里只会显示Models板块(你的数据契约),所有端点的路径、请求方法都会被隐藏,完全匹配你“仅展示数据契约”的需求。

如果只是想替换路径而非完全隐藏,也可以在Apply方法里遍历swaggerDoc.Paths,把每个路径的Key替换成占位符(比如""或"---"),但清空Paths是最直接满足“不显示端点”需求的方式。

内容的提问来源于stack exchange,提问作者Karthik M S

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.22 13:15:02