修改 MVC 的 Swagger 定义名称 API
Modify Swagger Definition Names for MVC API
我想修改为我的 MVC 应用程序自动生成的 Swagger 架构对象名称。
例如,我有许多实体,例如 EmployeeModel
或 CompanyModel
对象,可通过我们的 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,但可以使用更复杂的设置。
我想修改为我的 MVC 应用程序自动生成的 Swagger 架构对象名称。
例如,我有许多实体,例如 EmployeeModel
或 CompanyModel
对象,可通过我们的 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,但可以使用更复杂的设置。