Vous pouvez restreindre le sélecteur de gestionnaire de requêtes pour analyser uniquement le package de votre projet:
return new Docket( DocumentationType.SWAGGER_2)
.select()
.apis( RequestHandlerSelectors.basePackage( "your package" ) )
...
Je pense que la solution la plus élégante consiste à n'inclure que @RestController
contrôleurs en swagger, la seule chose à garder à l'esprit est d'annoter tous les contrôleurs REST avec cette annotation:
new Docket(DocumentationType.SWAGGER_2)
.select()
.apis(RequestHandlerSelectors.withClassAnnotation(RestController.class))
.paths(PathSelectors.any())
.build();
Comme BasicErrorController
est annoté avec @Controller
uniquement, le swagger éviterait BasicErrorController
dans le fichier de définition. Bien sûr, vous pouvez utiliser votre annotation personnalisée au lieu de @RestController
pour marquer vos REST contrôleurs comme contrôleurs éligibles par swagger.
Cela peut être fait en utilisant Predicates.not ().
@Bean
public Docket api() {
return new Docket(DocumentationType.SWAGGER_2)
.select()
.apis(RequestHandlerSelectors.any())
.paths(PathSelectors.any())
.paths(Predicates.not(PathSelectors.regex("/error.*")))
.build();
}
Par exemple, si votre package parent est com.app.microservice
package com.app.microservice;
Utilisez ensuite le code suivant, il n'affichera que les contrôleurs dans le package et désactivera/exclura les autres
@Configuration
@EnableSwagger2
public class SwaggerConfig {
@Bean
public Docket api() {
return new Docket(DocumentationType.SWAGGER_2)
.select()
.apis(RequestHandlerSelectors.basePackage("com.app.microservice"))
.build();
}
U peut également utiliser des annotations springfox-swagger2. springfox.documentation.annotations.ApiIgnore
@ApiIgnore
public class ErrorController {
Cela exclurait cette classe de la documentation.
Cela peut être fait en déplaçant la définition de @Bean
Vers la classe principale (celle avec @SpringBootApplication
) Et en utilisant sa this.getClass().getPackageName()
dans basePackage()
:
@Bean
public Docket swagger() {
return new Docket(DocumentationType.SWAGGER_2)
.select()
.apis(RequestHandlerSelectors.basePackage(this.getClass().getPackageName()))
.paths(PathSelectors.any())
.build()
.useDefaultResponseMessages(false);
}
Après avoir essayé beaucoup de solutions, rien ne fonctionne pour moi. Enfin, j'ai appris la chose la plus élémentaire, c'est-à-dire que le fichier dans lequel vous avez défini votre fichier de configuration swagger et votre fichier de méthode principal devrait être dans le même paquet.
@Bean
public Docket api() {
return new Docket(DocumentationType.SWAGGER_2)
.select()
.apis(RequestHandlerSelectors.any())
.paths(PathSelectors.any())
.paths(Predicates.not(PathSelectors.regex("/error.*")))
.build();
}