web-dev-qa-db-fra.com

Supprimer le contrôleur d'erreur de base dans SpringFox SwaggerUI

Existe-t-il un moyen de supprimer le "contrôleur d'erreur de base" de springfox swagger-ui?

Image:

enter image description here

26
Rajkishan Swami

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" ) )
        ...
47
Carsten Zeitz

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.

20
bladekp
  • 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();
    }
    
12
Pranav V R

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();
    }

enter image description here

6
Tapan Banker

U peut également utiliser des annotations springfox-swagger2. springfox.documentation.annotations.ApiIgnore

@ApiIgnore
public class ErrorController {

Cela exclurait cette classe de la documentation.

3
Antony Mithun

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);
}
1
RamirezRodriguez

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();
}

Veuillez vérifier cette image

0
ASK