Отключение Swagger Bundle в DropWizard - PullRequest
0 голосов
/ 19 сентября 2018

Я хочу отключить функциональность / конечную точку сваггера в производственной среде на основе значения конфигурации.

Как мне поступить?

Я считаю, что лучший способ достичь этого - не добавлять пакет во время выполнения метода инициализации при первом запуске приложения DropWizard.

Проблема с этим решением заключается в том, что вы не можете получить доступметоды получения конфигурации, которые заполняются из значений в файле 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;
        }
    });
}

Если мне нужно уточнить больше, пожалуйста, дайте мне знать.

Заранее спасибо.

Ответы [ 2 ]

0 голосов
/ 03 октября 2018

В то время я использовал более старую версию DropWizard.

После обновления появились новые методы, включая setIsEnabled ()

Это то, что было добавленорешить вопрос.

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

Спасибо,

0 голосов
/ 01 октября 2018

Вы можете установить переменную среды в рабочей среде и использовать ее, чтобы решить, включать ли SwaggerBundle или нет.Например:

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