删除 Swagger UI 上的架构 - 续

gro*_*eto 5 c# swagger swashbuckle

我已经关注了最上面的文章:.Net Core 3.1 Remove Schema on Swagger UI

我应用了这个过滤器:

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);
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

我已经在这里添加了:

services.AddSwaggerGen(options =>
            {
                options.OperationFilter<AddRequiredHeaderParameter>(Configuration.GetSection("DefaultConfig")["TenantId"]);
                options.DocumentFilter<RemoveSchemasFilter>();
             }
Run Code Online (Sandbox Code Playgroud)

所有好的架构都从 Swagger UI 的底部删除。然而,当我点击一个方法时,它会带来一个错误对话框。它可以工作,但是这个窗口保持在顶部,这非常烦人。

在此输入图像描述

让我们一起解决这个以前没有解决的问题!

gro*_*eto 1

模式过滤器没有用。

所有需要做的事情都在

app.UseSwaggerUI(options =>
{
    options.DefaultModelsExpandDepth(-1);
}
Run Code Online (Sandbox Code Playgroud)

注意:这是默认模型而不是默认模型。差异是 DefaultModel 是 model-example 部分中模型的默认扩展深度,而 DefaultModels 是模型的扩展深度。

  • 反对说它“无用”。它非常有用,因为当你的解决方案不起作用时它对我有用。 (4认同)