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
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
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
To zasadniczo powiela [druga, znacznie starsza odpowiedź] (https://stackoverflow.com/a/37796782/1240557) (tj. "Profil użycia") – kryger
/swagger-ui.html nadal dostępne, ale nie ma żadnych metod. Czy istnieje sposób na zabronienie URL? – gstackoverflow
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
@ user301693 Jeśli używasz Mavena, możesz załadować zależności swagger w określonym profilu Mavena, co powinno wystarczyć. – g00glen00b
@ g00glen00b i mają różne artefakty dla PROD niż dla innych środowisk? Chyba faceci QA i OPS nie byliby z tego bardzo zadowoleni. – luboskrnac