修改 MVC 的 Swagger 定义名称 API

Modify Swagger Definition Names for MVC API

我想修改为我的 MVC 应用程序自动生成的 Swagger 架构对象名称。

例如,我有许多实体,例如 EmployeeModelCompanyModel 对象,可通过我们的 REST 端点访问

但是,Swagger 定义不必或不希望在每个实体名称后包含单词 "Model"。他们应该只被称为员工或公司 -- 请参见屏幕截图中的示例。

你用什么库来构建你的 swagger shema?看看 Swashbuckle 。这允许为您的应用程序自动构建 swagger shema(通过使用 xml-documentation)并且可以灵活定制。请参阅文档中的“修改生成的模式”。

您必须在 EnableSwagger 方法中使用 SwaggerConfig.cs 文件中可用的 SchemaId 函数,如下所示:

c.SchemaId(t =>
{
    c.SchemaId(t => t.FullName.EndsWith("Model") ? t.FullName.Replace("Model", String.Empty) : t.FullName);
});

此方法允许您覆盖 Swashbuckle 默认行为并正确设置复杂类型名称。

我的示例直接解决了您的项目名称的 "Model" 部分的 removela,但可以使用更复杂的设置。