在 DropWizard 中禁用 Swagger Bundle
Disabling Swagger Bundle in DropWizard
我希望根据配置值在生产环境中禁用 swagger 功能/端点。
我该怎么做?
我认为实现此目的的最佳方法是在 DropWizard 应用程序首次启动时不在执行初始化方法期间添加捆绑包。
此解决方案的问题是您无法访问从 YAML/YML 文件中的值填充的配置获取方法。当我们的应用程序到达 运行 方法时,这些值可用。
这是我在应用程序中的初始化方法 class
@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>() { ... }
}
我当时使用的是旧版本的 DropWizard。
更新后,有可用的新方法,包括 setIsEnabled()
这是为解决问题而添加的内容。
bootstrap.addBundle(new SwaggerBundle<Configuration>() {
@Override
protected SwaggerBundleConfiguration getSwaggerBundleConfiguration(Configuration configuration) {
if(!configuration.getSwaggerEnabled()){
configuration.swaggerBundleConfiguration.setIsEnabled(false);
}
return configuration.swaggerBundleConfiguration;
}
});
}
谢谢,
我希望根据配置值在生产环境中禁用 swagger 功能/端点。
我该怎么做?
我认为实现此目的的最佳方法是在 DropWizard 应用程序首次启动时不在执行初始化方法期间添加捆绑包。
此解决方案的问题是您无法访问从 YAML/YML 文件中的值填充的配置获取方法。当我们的应用程序到达 运行 方法时,这些值可用。
这是我在应用程序中的初始化方法 class
@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>() { ... }
}
我当时使用的是旧版本的 DropWizard。
更新后,有可用的新方法,包括 setIsEnabled()
这是为解决问题而添加的内容。
bootstrap.addBundle(new SwaggerBundle<Configuration>() {
@Override
protected SwaggerBundleConfiguration getSwaggerBundleConfiguration(Configuration configuration) {
if(!configuration.getSwaggerEnabled()){
configuration.swaggerBundleConfiguration.setIsEnabled(false);
}
return configuration.swaggerBundleConfiguration;
}
});
}
谢谢,