如何配置Swashbuckle从文档中省略模板/实体/架构

问题描述 投票:0回答:1

我正在尝试为Swashbuckle构建过滤器,以在API文档中省略项目的模型/实体/模式,并保留控制器。使用的技术是Swashbuckle.AspNetCore v3.0.0 / Swagger-Ui v3.17.1。我已经找到了在控制器中省略某些方法的方法,但是我想在文档中省略模型。我发现了一个类似于我的问题,包括仅隐藏属性。

遵循过滤器代码

public void Apply(OpenApiSchema schema, SchemaFilterContext context)
{
    if (!(context.ApiModel is ApiObject))
    {
        return;
    }

    var model = context as ApiObject;

    if (schema?.Properties == null || model?.ApiProperties == null)
    {
        return;
    }

    var excludedProperties = model.Type
        .GetProperties()
        .Where(
            t => t.GetCustomAttribute<SwaggerExcludeAttribute>() != null
        );

    var excludedSchemaProperties = model.ApiProperties
        .Where(
            ap => excludedProperties.Any(
                pi => pi.Name == ap.MemberInfo.Name
            )
        );

    foreach (var propertyToExclude in excludedSchemaProperties)
    {
         schema.Properties.Remove(propertyToExclude.ApiName);
    }
}

quoto:How to configure Swashbuckle to ignore property on model

有人会建议仅从文档中隐藏模型/实体/模式,而不仅仅是其属性吗?如下图所示。谢谢。

enter image description here

.net-core swagger swagger-ui swashbuckle
1个回答
0
投票

在您的Swashbuckle / Swagger UI配置中将DefaultModelsExpandDepth设置为-1:

app.UseSwaggerUI(c =>
{
    ...
    c.DefaultModelsExpandDepth(-1);
}
© www.soinside.com 2019 - 2024. All rights reserved.