Eu tenho um aplicativo C # ASP.NET WebAPI com a documentação da API sendo gerada automaticamente usando o Swashbuckle . Quero poder omitir certos métodos da documentação, mas não consigo descobrir como dizer ao Swagger para não incluí-los na saída da interface do usuário do Swagger.
Eu sinto que tem algo a ver com adicionar um filtro de modelo ou esquema, mas não é óbvio o que fazer e a documentação parece fornecer apenas exemplos de como modificar a saída de um método, não removê-la completamente da saída.
Desde já, obrigado.
Alguém postou a solução no github, então eu vou colá-la aqui. Todos os créditos vão para ele. https://github.com/domaindrivendev/Swashbuckle/issues/153#issuecomment-213342771
Crie primeiro uma classe de atributo
Em seguida, crie uma classe de filtro de documento
Em seguida, na classe Swagger Config, adicione esse filtro de documento
O último passo é adicionar o atributo [HideInDocsAttribute] ao Controller ou Method que você não deseja que o Swashbuckle gere documentação.
fonte
Você pode remover "operações" do documento swagger depois que ele é gerado com um filtro de documento - basta definir o verbo como
null
(no entanto, pode haver outras maneiras de fazê-lo também)O exemplo a seguir permite apenas
GET
verbos - e é retirado desse problema .e na sua configuração do swagger:
fonte
path.get = null;
- como resultado, esses caminhos ainda serão incluídos no arquivo Swagger, mas apenas sem os detalhes. Talvez seja melhor incluir aApiExplorerSettingsAttribute
resposta como você mencionou na resposta original no GitHub. O uso do ApiExplorerSettings também pode evitar que informações de tipo sejam adicionadas àschemes
lista de arquivos do Swagger .Eu preferiria remover completamente as entradas do dicionário para itens de caminho:
Com essa abordagem, você não obteria itens "vazios" na definição gerada pelo swagger.json.
fonte
Faça um filtro
Faça um atributo
Aplicar em startup.cs
Adicione o atributo [SwaggerTag] aos métodos e controladores que você deseja incluir no Swagger JSON
fonte
Pode ajudar alguém, mas durante o desenvolvimento (depuração) gostamos de expor Controladores e / ou Ações inteiros e depois ocultá-los durante a produção (versão compilada)
fonte
Com base na resposta @spottedmahns . Minha tarefa era vice-versa. Mostre apenas aqueles que são permitidos.
Estruturas: .NetCore 2.1; Swagger: 3.0.0
Atributo adicionado
E implemente IDocumentFilter personalizado
Código ConfigureServices :
fonte
adicione uma linha SwaggerConfig c.DocumentFilter ();
fonte
Adicione isso aos seus métodos que você deseja omitir
fonte