我们使用Swashbuckle.AspNetCore包来实现swagger。我们有很多调用返回多态对象,如SortEntry或VersionedObject,并且在swagger中生成的组件似乎包含一堆关于这些对象的Meta数据,如下所示:
"Data.SortEntry`1[[Data.Search.Enums.DetailsSortType, Data, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
字符串
我不想太过纠结,但这只是我们的流程造成的一个问题,在我们的流程中,我们使用生成的swagger来验证API契约。因此,这个元数据会导致问题,因为它包含一个版本属性,该属性每次都会更改,并使我们的构建失败。
我的问题是,有没有一种方法可以抑制正在生成的元数据?在以前的Swashbuckle版本(<3.0)中,无论出于何种原因,这都不是问题。
编辑:下面是一个例子,当我们使用Swashbuckle.AspNetCore 2.x并生成swagger json v2.0时,其中一个组件看起来像什么:
SortEntry[DetailsSortType]
型
我们正在使用Swashbuckle.AspNetCore@5.6.3并生成OpenAPI3.0 swagger。
2条答案
按热度按时间5w9g7ksd1#
在看了一些其他的问题之后,我最终发现了这个:
https://github.com/domaindrivendev/Swashbuckle.AspNetCore/issues/1803
我能够提取最初在SwashBuckle.AspNetCore4.x.x中可用的TypeContext.cs代码,并使用它实现自定义模式ID。效果很好。
jhdbpxl92#
你可以将这个文件复制到你的项目中,它是一个类型扩展,为类返回一个“友好”的名称:
https://github.com/domaindrivendev/Swashbuckle.WebApi/blob/5489aca0d2dd7946f5569341f621f581720d4634/Swashbuckle.Core/Swagger/TypeExtensions.cs
类型扩展允许你附加和调用一个类的新方法,你甚至不需要原始的类代码或者重新编译等等。在底层,类型扩展是一个静态函数,它接受定义它的类作为参数之一。
要将其与Swashbuckle & Swagger一起使用,只需将这一行添加到您的StartupBase。
字符串