Я пытаюсь создать фильтр для 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);
}
}
цитата: Как настроить Swashbuckle для игнорирования свойства на модели
Есть ли у кого-нибудь предложения скрыть из документации только модели / объекты / схемы, а не только их атрибуты? Как изображение ниже.