/ / Wie kann man swagger-ui in spring-boot vollständig deaktivieren? (/ Swagger-ui.html sollte 404 zurückgeben) - Java, Spring, Spring-Boot, Swagger, Swagger-Ui

Wie man swagger-ui im ​​Spring-Boot vollständig deaktiviert? (/ Swagger-ui.html sollte 404 zurückgeben) - java, spring, spring-boot, swagger, swagger-ui

Ich habe folgendes Thema gelesen: Swagger mit Spring MVC deaktivieren

und ich schrieb:

@Bean
public Docket api() {
return new Docket(DocumentationType.SWAGGER_2)
.select()
.apis(RequestHandlerSelectors.basePackage("com.project.name.controller"))
.paths(PathSelectors.ant("/api/**"))
.build()
.apiInfo(apiInfo())
.enable(false);
}

Aber falls ich versuche, auf Swagger ui zuzugreifen: localhost:8080/swagger-ui.html
Aha Bildbeschreibung hier eingeben

Es sieht nicht genau aus. Kann ich diese URL vollständig deaktivieren? 404 zum Beispiel oder so ähnlich.

Antworten:

14 für die Antwort № 1

Meine Antwort ist ähnlich wie die zuvor gegebene mit einem kleinen Unterschied. Normalerweise erstelle ich ein separates Federprofil mit dem Namen swagger. Wenn ich Swagger aktivieren möchte, übergebe ich beim Starten meiner Anwendung das folgende VM-Flag. -Dspring.profiles.active=swagger. Hier ist ein Beispiel meiner Swagger-Konfiguration.

@Profile(value = {"swagger"})
@Configuration
@EnableSwagger2
public class SwaggerConfiguration {
...
}

Nächstes Mal, wenn Sie versuchen, darauf zuzugreifen swagger-ui.html ohne swagger Profil erhalten Sie einen leeren Swagger-Bildschirm, aber nicht 404.

Bildbeschreibung hier eingeben

Wenn Sie die statische Swagger-UI-Seite überhaupt nicht laden möchten, können Sie einen einfachen Controller wie folgt schreiben:

@Profile("!swagger")
@RestController
@Slf4j
public class DisableSwaggerUiController {

@RequestMapping(value = "swagger-ui.html", method = RequestMethod.GET)
public void getSwagger(HttpServletResponse httpResponse) throws IOException {
httpResponse.setStatus(HttpStatus.NOT_FOUND.value());
}
}

Nun, wenn Sie versuchen, darauf zuzugreifen swagger-ui.html ohne swagger Profil erhalten Sie eine 404.


1 für die Antwort № 2

Sie können das auslagern @EnableSwagger2 zu seinen eigenen @Configruation und laden Sie es bedingt über eine Eigenschaft oder ein Profil. z.B.

@Profile("!production")
@Configuration
@EnableSwagger2
public class SwaggerConfiguration{
//Additional Swagger Beans

}

Dies würde Swagger für jedes Profil aktivieren, das nicht produziert wird.