Verwijder de basisfoutcontroller in SpringFox SwaggerUI

Is er een manier om de “basic-error-controller” van springfox swagger-ui te verwijderen?

Afbeelding:

voer hier de afbeeldingsbeschrijving in


Antwoord 1, autoriteit 100%

U kunt de selector voor het behandelen van verzoeken beperken om alleen het pakket van uw project te scannen:

   return new Docket( DocumentationType.SWAGGER_2)
        .select()
        .apis( RequestHandlerSelectors.basePackage( "your package" ) )
        ...

Antwoord 2, autoriteit 42%

Ik denk dat de meest elegante oplossing is om alleen @RestController-controllers op te nemen in branie, het enige om in gedachten te houden is om alle REST-controllers te annoteren met die annotatie:

new Docket(DocumentationType.SWAGGER_2)
            .select()
            .apis(RequestHandlerSelectors.withClassAnnotation(RestController.class))
            .paths(PathSelectors.any())
            .build();

Omdat BasicErrorControlleris geannoteerd met alleen @Controller, zou swagger BasicErrorControllerin het definitiebestand vermijden. Natuurlijk kun je je aangepaste annotatie gebruiken in plaats van @RestControllerom je REST-controllers te markeren als controllers die door swagger in aanmerking komen.


Antwoord 3, autoriteit 24%

  • Het kan gedaan worden met Predicate.not().

    @Bean
     public Docket api() {
         return new Docket(DocumentationType.SWAGGER_2)
             .select()
             .apis(RequestHandlerSelectors.any())
             .paths(PathSelectors.any())
             .paths(Predicate.not(PathSelectors.regex("/error.*")))
             .build();
     }
    

Antwoord 4, autoriteit 9%

Bijvoorbeeld als uw bovenliggende pakket com.app.microservice is

package com.app.microservice;

Gebruik vervolgens de volgende code om alleen de controllers in het pakket weer te geven en anderen uit te schakelen/uit te sluiten

@Configuration
@EnableSwagger2
public class SwaggerConfig {
    @Bean
    public Docket api() {
        return new Docket(DocumentationType.SWAGGER_2)
                .select()
                .apis(RequestHandlerSelectors.basePackage("com.app.microservice"))
                .build();
    }

voer hier de afbeeldingsbeschrijving in


Antwoord 5, autoriteit 5%

U kunt ook springfox-swagger2-annotaties gebruiken. springfox.documentation.annotations.ApiIgnore

@ApiIgnore
public class ErrorController {

Dit zou die klasse uitsluiten van documentatie.


Antwoord 6, autoriteit 2%

Mijn probleem was alleen dat ik vergat de Docket api()-methode te annoteren met @Bean.


Antwoord 7

Dit kan worden gedaan door de @Bean-definitie naar de hoofdklasse te verplaatsen (die met @SpringBootApplication) en de bijbehorende this.getClass().getPackageName()in basePackage():

@Bean
public Docket swagger() {
    return new Docket(DocumentationType.SWAGGER_2)
            .select()
            .apis(RequestHandlerSelectors.basePackage(this.getClass().getPackageName()))
            .paths(PathSelectors.any())
            .build()
            .useDefaultResponseMessages(false);
}

Antwoord 8

Na veel oplossingen geprobeerd te hebben, werkt niets voor mij. Eindelijk leerde ik het zeer basale ding kennen, dwz zorg ervoor dat het bestand waarin je je swagger configuratiebestand en je belangrijkste methodebestandhebt gedefinieerd in de hetzelfde pakket.

@Bean
public Docket api() {
return new Docket(DocumentationType.SWAGGER_2)
    .select()
    .apis(RequestHandlerSelectors.any())
    .paths(PathSelectors.any())
    .paths(Predicates.not(PathSelectors.regex("/error.*")))
    .build();
}

Controleer deze afbeelding

Other episodes