Отказаться от маршрутов в Swashbuckle - PullRequest
0 голосов
/ 10 февраля 2020

Я реализовал относительно большой MVC проект с asp core 3.0. Теперь я хочу добавить API к конечной точке /api/* и использовать swashbuckle для предоставления документации.

Как возможно, что в документации появляются только маршруты, начинающиеся с /api?

использование [ApiExplorerSettings(IgnoreApi = true)] во всех других контроллерах, которых я хочу избежать.

Есть ли альтернативная возможность включить в документацию только некоторые контроллеры, так сказать Opt-In?

1 Ответ

0 голосов
/ 10 февраля 2020

Атрибут ApiExplorerSettings является рекомендуемым. Вы также можете использовать следующий код.

public class ExcludeControllersFilter : IDocumentFilter
{
    public void Apply(OpenApiDocument swaggerDoc, DocumentFilterContext context)
    {
        var pathsToRemove = swaggerDoc.Paths
            .Where(pathItem => !pathItem.Key.Contains("api/"))
            .ToList();

        foreach (var item in pathsToRemove)
        {
            swaggerDoc.Paths.Remove(item.Key);
        }
    }
}

И фильтр документов можно применять следующим образом.

services.ConfigureSwaggerGen(options =>
{
    options.DocumentFilter<ExcludeControllersFilter>();
});
...