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

配置Swashbuckle(OpenAPI)忽略模型中的命名空间

解决Swashbuckle只显示模型名而非完整命名空间的问题

要让Swagger页面的Model区域只显示模型名称(比如把MyNamespace.SubFolder.MyModel简化为MyModel),你只需要在配置Swashbuckle时自定义SchemaId的生成逻辑即可,下面分常见场景给出具体实现:

.NET 6+(Top-level语句,Program.cs)

在配置Swagger服务的代码段中,修改AddSwaggerGen的配置项:

builder.Services.AddSwaggerGen(options =>
{
    // 自定义SchemaId生成规则,仅返回类型的名称
    options.CustomSchemaIds(type => type.Name);
});

旧版.NET(Startup.cs)

如果项目采用传统Startup.cs结构,在ConfigureServices方法中配置:

services.AddSwaggerGen(options =>
{
    options.CustomSchemaIds(type => type.Name);
});

额外注意

如果你的项目存在不同命名空间下的同名模型,直接取type.Name会导致Swagger Schema冲突。这种情况可以调整逻辑,在保证名称简洁的同时避免冲突,比如:

options.CustomSchemaIds(type => 
    // 核心命名空间下的模型直接用原名,其他的加最后一级命名空间作为前缀
    type.Namespace.StartsWith("MyProject.Core") ? type.Name : $"{type.Namespace.Split('.').Last()}.{type.Name}"
);

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 10:07:55