修改MVC API的Swagger定义名称

时间:2016-09-15 02:01:32

标签: asp.net-mvc swagger swashbuckle

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

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

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

enter image description here

2 个答案:

答案 0 :(得分:2)

您必须使用SwaggerConfig.cs方法中EnableSwagger文件中提供的 SchemaId 功能,如下所示:

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

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

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

答案 1 :(得分:0)

你用什么库来建立你的摇摆不定的shema?看看Swashbuckle。这允许为您的应用程序自动构建swagger shema(通过使用xml文档)并且可以灵活地进行自定义。请参阅" 修改生成的架构"在文档中。