У меня есть приложение C # ASP.NET WebAPI с документацией API, автоматически создаваемой с помощью Swashbuckle . Я хочу иметь возможность исключить определенные методы из документации, но я не могу понять, как сказать Swagger не включать их в вывод пользовательского интерфейса Swagger.
Я чувствую, что это как-то связано с добавлением фильтра модели или схемы, но неясно, что делать, и документация, кажется, предоставляет только примеры того, как изменить вывод для метода, а не полностью удалить его из вывода.
Заранее спасибо.
Кто-то разместил решение на github, поэтому я собираюсь вставить его сюда. Все заслуги принадлежат ему. https://github.com/domaindrivendev/Swashbuckle/issues/153#issuecomment-213342771
Сначала создайте класс атрибута
Затем создайте класс фильтра документов
Затем в классе Swagger Config добавьте этот фильтр документов
Последний шаг - добавить атрибут [HideInDocsAttribute] к контроллеру или методу, который вы не хотите, чтобы Swashbuckle создавал документацию.
источник
Вы можете удалить «операции» из документа swagger после того, как он сгенерирован с помощью фильтра документа - просто установите глагол на
null
(хотя могут быть и другие способы сделать это)В следующем примере разрешены только
GET
глаголы - он взят из этого выпуска .и в вашей конфигурации чванства:
источник
path.get = null;
- в результате эти пути все равно будут включены в файл Swagger, но только без деталей. Возможно, было бы лучше включитьApiExplorerSettingsAttribute
в свой ответ, как вы упомянули в своем исходном ответе на GitHub. Использование ApiExplorerSettings также может предотвратить добавление информации о типе вschemes
список файла Swagger .Я бы предпочел полностью удалить словарные записи для элементов пути:
При таком подходе вы не получите «пустых» элементов в сгенерированном определении swagger.json.
источник
Сделайте фильтр
Сделайте атрибут
Применить в startup.cs
Добавьте атрибут [SwaggerTag] к методам и контроллерам, которые вы хотите включить в Swagger JSON.
источник
Может помочь кому-то, но во время разработки (отладки) нам нравится раскрывать целые контроллеры и / или действия, а затем скрывать их во время производства (сборка выпуска)
источник
На основе ответа @spottedmahns . Моя задача была наоборот. Показывать только разрешенные.
Фреймворки: .NetCore 2.1; Размах: 3.0.0
Добавлен атрибут
И реализовать собственный IDocumentFilter
Код ConfigureServices :
источник
добавить одну строку SwaggerConfig c.DocumentFilter ();
источник
Добавьте это поверх ваших методов, которые вы хотите опустить -
источник