其他分享
首页 > 其他分享> > 如何在spring-boot中完全禁用swagger-ui?(/ swagger-ui.html应该返回404)

如何在spring-boot中完全禁用swagger-ui?(/ swagger-ui.html应该返回404)

作者:互联网

我读过以下主题:
Disabling Swagger with 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

看起来不准确.我可以完全禁用此网址吗?例如404或类似的东西.

解决方法:

我的回答类似于前面提供的答案,略有不同.我通常创建一个名为swagger的独立弹簧轮廓.当我想启用Swagger时,我在启动应用程序时传递以下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 UI页面,可以编写一个简单的控制器,如下所示,

@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.

标签:swagger-ui,java,spring,spring-boot,swagger
来源: https://codeday.me/bug/20190930/1836288.html