2016-06-13 19 views

risposta

8

Inserisci la tua configurazione di swagger in una classe di configurazione separata e annotala con l'annotazione @Profile -> in modo che venga scansionata nel contesto di Spring solo in determinati profili.

Esempio:

@Configuration 
@EnableSwagger2 
@Profile("dev") 
public class SwaggerConfig { 
    // your swagger configuration 
} 

È possibile che definire proprio profilo primavera Boot applicazione è in funzione in via riga di comando: --spring.profiles.active=dev o tramite file di configurazione: spring.profiles.active=dev.

Read this section of Spring Boot docs for more info about @Profile

+4

abbiamo fatto questo e sembra che il extension -> swagger-ui.html viene comunque visualizzato anche se le viscere delle API non vengono visualizzate. C'è un modo per far sì che lo swagger-ui.html non venga nemmeno prodotto? – user301693

+0

@ user301693 Se stai usando Maven puoi caricare le dipendenze dello swagger all'interno di uno specifico profilo Maven, che dovrebbe fare il trucco credo. – g00glen00b

+1

@ g00glen00b e hanno diversi artefatti per PROD rispetto ad altri ambienti? Immagino che i ragazzi di QA e OPS non sarebbero molto contenti di questo. – luboskrnac

1

Questa è la mia classe di configurazione:

@Configuration 
@Profile("swagger") 
@EnableSwagger2 
public class SwaggerConfig { 

    @Value("${info.build.version}") 
    private String buildVersion; 

    @Bean 
    public Docket documentation() { 
     return new Docket(DocumentationType.SWAGGER_2) 
       .select() 
       .apis(RequestHandlerSelectors.any()) 
       .paths(regex("/rest/.*")) 
       .build() 
       .pathMapping("/") 
       .apiInfo(metadata()); 
    } 

    private ApiInfo metadata() { 
     return new ApiInfoBuilder() 
       .title("API documentation of our App") 
       .description("Use this documentation as a reference how to interact with app's API") 
       .version(buildVersion) 
       .contact(new Contact("Dev-Team", "https://dev-website", "[email protected]")) 
       .build(); 
    } 
} 

Ovunque ho bisogno di Swagger, aggiungo il profilo swagger alla variabile di ambiente SPRING_PROFILES_ACTIVE

+1

Questo essenzialmente duplica [l'altra, risposta molto più vecchia] (https://stackoverflow.com/a/37796782/1240557) (cioè "usa profilo") – kryger

+0

/swagger-ui.html ancora disponibile ma non ci sono metodi. C'è modo di vietare l'URL? – gstackoverflow

Problemi correlati