wake-up-neo.com

Wie schalten Sie Swagger-Ui in der Produktion aus?

Ich habe Swagger an meine Spring Boot-Anwendung angeschlossen. Spring Boot ermöglicht es Ihnen, Eigenschaftsdateien für jede Umgebung zu haben, die Sie haben. Gibt es eine Möglichkeit, Swagger für eine Produktionsumgebung zu deaktivieren?

20
user301693

Platzieren Sie Ihre Swagger-Konfiguration in einer separaten Konfigurationsklasse und kommentieren Sie sie mit @Profile annotation ->, sodass sie nur in bestimmten Profilen in den Spring-Kontext gescannt wird.

Beispiel:

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

Sie können dann ein Profil definieren, in dem Ihre Spring Boot-App über die Befehlszeile ausgeführt wird: --spring.profiles.active=dev oder über die Konfigurationsdatei: spring.profiles.active=dev.

In diesem Abschnitt der Spring Boot-Dokumente finden Sie weitere Informationen zu @Profile .

14
luboskrnac

Wenn Sie in mehreren Umgebungen arbeiten, können Sie auch @Profile als Array verwenden

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

Dies ist meine Konfigurationsklasse:

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

Wo immer ich Swagger brauche, füge ich der Umgebungsvariable SPRING_PROFILES_ACTIVE das Profil swagger hinzu.

2
user3105453

Für diejenigen, die den Code gen verwenden (der Swagger2SpringBoot generiert):

  1. Schreiben Sie Ihren eigenen Swagger2SpringBoot (mit dem @Profile-Bit) und suchen Sie ihn im selben Paketpfad wie den automatisch generierten.
  2. Bearbeiten Sie das Swagger-Codegen-Maven-Plugin, um es in src/main/Java zu platzieren (das Ihr eigenes in Punkt 1 überschreibt).
  3. Bearbeiten Sie .swagger-codegen-ignore, um Ihren Swagger2SpringBoot nicht zu überschreiben
  4. Beachten Sie, dass auch andere Dinge überschrieben werden, z. pom.xml und application.properties. Fügen Sie sie einfach zu .swagger-codegen-ignore hinzu.

Getan.

0
Jacques Koorts