2016-06-13 8 views
13

Mam swagger podłączony do mojej aplikacji wiosennego buta. Wiosenne uruchamianie pozwala na posiadanie plików właściwości dla każdego środowiska, które posiadasz. Czy istnieje sposób, aby wyłączyć oszustów w środowisku produkcyjnym?Jak wyłączyć SWAGGER-ui w produkcji

Odpowiedz

8

Ustaw swagger na oddzielną klasę konfiguracji i dodaj adnotację do niej z adnotacją @Profile -> tak, aby była skanowana do kontekstu Spring tylko w niektórych profilach.

Przykład:

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

niż można określić profil aplikacja Wiosna Boot pracuje w wierszu poleceń poprzez: --spring.profiles.active=dev albo poprzez plik konfiguracyjny: spring.profiles.active=dev.

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

+4

co zrobiliśmy to i wydaje się, że rozszerzenie -> swagger-ui.html nadal pojawia się, nawet jeśli nie widzisz odwagi api. Czy istnieje sposób na to, aby plik swagger-ui.html nie został nawet wyprodukowany? – user301693

+0

@ user301693 Jeśli używasz Mavena, możesz załadować zależności swagger w określonym profilu Mavena, co powinno wystarczyć. – g00glen00b

+1

@ g00glen00b i mają różne artefakty dla PROD niż dla innych środowisk? Chyba faceci QA i OPS nie byliby z tego bardzo zadowoleni. – luboskrnac

1

To moja klasa konfiguracja:

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

Gdziekolwiek muszę Swagger, dodaję profil swagger do zmiennej środowiskowej SPRING_PROFILES_ACTIVE

+1

To zasadniczo powiela [druga, znacznie starsza odpowiedź] (https://stackoverflow.com/a/37796782/1240557) (tj. "Profil użycia") – kryger

+0

/swagger-ui.html nadal dostępne, ale nie ma żadnych metod. Czy istnieje sposób na zabronienie URL? – gstackoverflow