У меня полнофункциональное приложение ASP.NET с конечными точками API.Я использую NSwag для создания чванства документа.Это все работает.
Мне нужно создать документ только для небольшого подмножества конечных точек.Пути отфильтрованы, а схема - нет.Как отфильтровать объекты схемы в соответствии с фильтрацией путей?
Пример: у меня есть этот фильтр
public class IncludeControllersInSwagger : IOperationProcessor
{
public Task<bool> ProcessAsync(OperationProcessorContext context)
{
return Task.FromResult(
context.ControllerType == typeof(ControllerA));
}
}
И это при запуске:
settings.GeneratorSettings.OperationProcessors.Add(new IncludeControllersInSwagger());
Контроллеры:
public class AResponse
{
public string Message { get; set; }
public bool Flag { get; set; }
}
public class BResponse
{
public string Message { get; set; }
public int Count { get; set; }
}
[Route("a")]
public class ControllerA : ApiController
{
[HttpGet]
public AResponse Get()
{
return new AResponse
{
Message = "Hello from A",
Flag = true
};
}
}
[Route("b")]
public class ControllerB : ApiController
{
[HttpGet]
public BResponse Get()
{
return new BResponse
{
Message = "Hello from B",
Count = 42
};
}
}
Тогда сгенерированный чванство содержит только один путь:
"paths": {
"/a": {
"get": { .. etc
}
}
И это все, это правильно.
Но схемы содержат оба:
"schemas": {
"AResponse": {
"type": "object",
"additionalProperties": false,
etc
},
"BResponse": {
"type": "object",
"additionalProperties": false,
etc
}
}
}
Тип BResponse
не должен быть там. Как его удалить?
Эти дополнительные данные делаютСекция схем чрезвычайно многословна и непригодна для публичной документации в случае, когда существует более 10 конечных точек, и только 2 из них открыты через шлюз и поэтому задокументированы в swagger.
Существует ISchemaProcessor
, но он не возвращаетсялогическое значение типа IOperationProcessor
.