Как полностью отключить swagger-ui в spring-boot?(/swagger-ui.html должен вернуть 404)

Я прочитал следующую тему: отключение Swagger с помощью Spring MVC

я писал:

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

но в случае, если я попытаюсь получить доступ к swagger ui:localhost:8080/swagger-ui.html
Я вижу enter image description here

это выглядит не точный. Могу ли я полностью отключить этот URL ? 404, например, или что-то вроде этого.

2 ответов


мой ответ похож на ответ раньше с небольшой разницей. Обычно я создаю отдельный профиль spring с именем swagger. Когда я хочу включить Swagger, L передайте следующий флаг VM при запуске моего приложения,-Dspring.profiles.active=swagger. Вот пример моей конфигурации Swagger,

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

в следующий раз, когда вы пытаетесь получить доступ к swagger-ui.html без swagger профиль, вы получите пустой экран Swagger, но не 404.

enter image description here

если вы не хотите загружать статическую страницу пользовательского интерфейса Swagger вообще, вы можете написать простой контроллер, как показано ниже,

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

теперь, если вы попытаетесь получить доступ к swagger-ui.html без swagger профиль, вы получите 404.


вы можете externalize @EnableSwagger2 собственных @Configruation и загрузите его условно через свойство или профиль. например,

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

}

это активирует swagger для любого профиля, который не является производственным.