.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>());

RemoveSchemasFilterApply 方法中,您应该能够识别要删除的 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 是模型的扩展深度。