Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

Como definir os Models que serão expostos

Tenho o seguinte Docket:

@Bean
    public Docket api() {
        return new Docket(DocumentationType.SWAGGER_2)
                .select()
                .apis(RequestHandlerSelectors.basePackage("dev.iwhrim.user"))
                .paths(PathSelectors.ant("/**"))
                .build()
                .ignoredParameterTypes(User.class)
                .apiInfo(getApiInformation());
    }

Na painga swagger-ui.html eh exibido, no models, tudo isso: Blob File InputStream Photo Resource URI URL URLStreamHandler UserDTO

Sendo que a unica coisa que eu queria que fosse exibido eh o UserDTO. Tem como configurar para exibir apenas as classes que eu escolher? Se eu fizer .ignoredParameterTypes(User.class, Photo.class, etc...) ele funciona como eu quero, mas tem como fazer o contrario que seria definir apenas as para incluir e nao precisar ficar eliminando todas as outras?

2 respostas
solução!

Oi Gustavo,

Acho que no seu caso você terá que restringir o que você quer expor separando em outro pacote e definindo outro path distinto.

Por exemplo, suponha que no projeto eu tenha as seguintes urls:

/api/produtos
/api/clientes
/api/pedidos

E todos os controllers estão no pacote br.com.empresa.projeto.controller.

Se eu quiser apenas expor os endpoints relacionados com pedidos, poderia alterar seu endpoint para ficar assim:

/api/public/pedidos

E colocar as classes controller e model de pedidos em outro pacote: br.com.empresa.projeto.api.controller e br.com.empresa.projeto.api.model

E nas configurações do Swagger deixaria assim:

@Bean
public Docket api() {
    return new Docket(DocumentationType.SWAGGER_2)
        .select()
        .apis(RequestHandlerSelectors.basePackage("br.com.empresa.projeto.api"))
        .paths(PathSelectors.ant("/api/public/**"))
        .build()
        .ignoredParameterTypes(User.class)
        .apiInfo(getApiInformation());
}

Obrigado pela rapida resposta, Rodrigo! Mas então, o problema não era exatamente os controllers, mas sim o models não definidos por mim que estavam sendo gerados automaticamente. Ai acabei usando o seguinte para q eles não fossem exibidos:

.ignoredParameterTypes(File.class, InputStream.class, Resource.class,
                        URL.class, URI.class, URLStreamHandler.class, Blob.class)

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software