Ho swagger collegato alla mia applicazione di avvio a molla. Spring Boot ti permette di avere file di proprietà per ogni ambiente che hai. C'è un modo per disabilitare lo swagger per un ambiente di produzione?Come disattivare lo swagger-ui in produzione
risposta
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
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
Questo essenzialmente duplica [l'altra, risposta molto più vecchia] (https://stackoverflow.com/a/37796782/1240557) (cioè "usa profilo") – kryger
/swagger-ui.html ancora disponibile ma non ci sono metodi. C'è modo di vietare l'URL? – gstackoverflow
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
@ 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
@ 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