java - 在 DropWizard 中禁用 Swagger Bundle

标签 java rest swagger dropwizard

我希望根据配置值在生产环境中禁用 swagger 功能/端点。

我该如何解决这个问题?

我相信实现此目的的最佳方法是在 DropWizard 应用程序首次启动时执行初始化方法期间不要添加 bundle 。

此解决方案的问题是您无法访问从 YAML/YML 文件中的值填充的配置获取方法。当我们应用程序进入 run 方法时,这些值就可用。

这是我的应用程序类的初始化方法

@Override
public void initialize(Bootstrap<Configuration> bootstrap) {
    LOGGER.debug("initialize");
    bootstrap.setConfigurationSourceProvider(new SubstitutingSourceProvider(bootstrap.getConfigurationSourceProvider(),
            new EnvironmentVariableSubstitutor(false)));

    bootstrap.addBundle(new SwaggerBundle<Configuration>() {
        @Override
        protected SwaggerBundleConfiguration getSwaggerBundleConfiguration(Configuration configuration) {
            return configuration.swaggerBundleConfiguration;
        }
    });
}

如果我需要澄清更多信息,请告诉我。

提前致谢。

最佳答案

您可以在生产中设置环境变量,并使用它来决定是否包含 SwaggerBundle。例如:

if (!"prod".equalsIgnoreCase(System.getenv("ENVIRONMENT"))) {
  bootstrap.addBundle(new SwaggerBundle<Configuration>() { ... }
}

关于java - 在 DropWizard 中禁用 Swagger Bundle,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52407382/

相关文章:

c# - Swagger API 不刷新文档

asp.net-core - .Net Core 2.0 中的 SwashBuckle UI 显示错误

java - Swagger-UI 无法识别 application/hal+json

ios - 从 Swift 函数中的异步调用返回数据

rest - 将是/否映射到 ReST API 查询参数中的 bool 值

javascript - 将 REST API 用于 Discord 机器人

Java:Jlist setSelectedValue() 但 ignoreCase

java - 使用 Camel+Spring WS 发送 SOAP 附件?

java - 您的 Java 低延迟应用程序的开发 list 是什么?

java - 如何在 JSP 页面中检索并显示数据库中的图像?