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

新手上路,请多包涵

我已阅读以下主题: 使用 Spring MVC 禁用 Swagger

我写道:

 @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

我懂了 在此处输入图像描述

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

原文由 gstackoverflow 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 5.9k
2 个回答

我的答案与之前提供的答案类似,但略有不同。我通常会创建一个名为 swagger 的单独弹簧配置文件。当我想启用 Swagger 时,我会在启动我的应用程序时传递以下 VM 标志 -Dspring.profiles.active=swagger 。这是我的 Swagger 配置示例,

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

下次当您尝试访问 swagger-ui.html 没有 swagger 配置文件时,您将看到一个空的 Swagger 屏幕,但不是 404。

在此处输入图像描述

如果你根本不想加载静态的 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 配置文件的情况下访问 swagger-ui.html ,您将获得 404。

原文由 Indra Basak 发布,翻译遵循 CC BY-SA 3.0 许可协议

使用 swagger 3.0.0 版本,您可以在相应的环境配置文件中添加 springfox.documentation.enabled=false application.properties 文件。例如,我已将此添加到 application-prod.properties 以在生产中禁用(在运行应用程序时,您必须使用 VM args 指定配置文件,如 -Dspring.profiles.active=prod

原文由 Vamsi Krishna DS 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题