.Net Core 3.1 删除 Swagger 上的架构 UI
.Net Core 3.1 Remove Schema on Swagger UI
我有 .Net 3.1 Web Api,我想删除 Swagger 上的“模式”部分 UI。
怎么做?
向您的 swagger 配置添加自定义 IDocumentFilter
实现:
services.AddSwaggerGen(options => options.DocumentFilter<RemoveSchemasFilter>());
在 RemoveSchemasFilter
的 Apply
方法中,您应该能够识别要删除的 OpenApiDocument
的元素并相应地执行此操作。
经过一番折腾之后,根据用户的建议“CoffeeCodeConverterImpl”,我将 class 制作成这样:
public class RemoveSchemasFilter : IDocumentFilter
{
public void Apply(OpenApiDocument swaggerDoc, DocumentFilterContext context)
{
IDictionary<string, OpenApiSchema> _remove = swaggerDoc.Components.Schemas;
foreach (KeyValuePair<string, OpenApiSchema> _item in _remove)
{
swaggerDoc.Components.Schemas.Remove(_item.Key);
}
}
}
实施:
c.DocumentFilter<RemoveSchemasFilter>();
关于添加 Swagger UI 只需添加以下行:
app.UseSwaggerUI(c => {
c.DefaultModelsExpandDepth(-1);
});
不需要模式过滤器。经过几天的努力,我发现:
所有需要做的都在
app.UseSwaggerUI(options =>
{
options.DefaultModelsExpandDepth(-1);
});
注意:是DefaultModels(复数)不是DefaultModel(单数)。不同之处在于 DefaultModels 是 model-example 部分模型的默认扩展深度,而 DefaultModels 是模型的扩展深度。
我有 .Net 3.1 Web Api,我想删除 Swagger 上的“模式”部分 UI。
怎么做?
向您的 swagger 配置添加自定义 IDocumentFilter
实现:
services.AddSwaggerGen(options => options.DocumentFilter<RemoveSchemasFilter>());
在 RemoveSchemasFilter
的 Apply
方法中,您应该能够识别要删除的 OpenApiDocument
的元素并相应地执行此操作。
经过一番折腾之后,根据用户的建议“CoffeeCodeConverterImpl”,我将 class 制作成这样:
public class RemoveSchemasFilter : IDocumentFilter
{
public void Apply(OpenApiDocument swaggerDoc, DocumentFilterContext context)
{
IDictionary<string, OpenApiSchema> _remove = swaggerDoc.Components.Schemas;
foreach (KeyValuePair<string, OpenApiSchema> _item in _remove)
{
swaggerDoc.Components.Schemas.Remove(_item.Key);
}
}
}
实施:
c.DocumentFilter<RemoveSchemasFilter>();
关于添加 Swagger UI 只需添加以下行:
app.UseSwaggerUI(c => {
c.DefaultModelsExpandDepth(-1);
});
不需要模式过滤器。经过几天的努力,我发现:
所有需要做的都在
app.UseSwaggerUI(options =>
{
options.DefaultModelsExpandDepth(-1);
});
注意:是DefaultModels(复数)不是DefaultModel(单数)。不同之处在于 DefaultModels 是 model-example 部分模型的默认扩展深度,而 DefaultModels 是模型的扩展深度。