Конфигурирование Swagger для игнорирования конечных точек Spring Boot Actuator - PullRequest
0 голосов
/ 06 июля 2018

Spring Boot RESTful веб-сервис и Swagger 2 здесь.У меня есть следующие настройки класса @Configuration для настройки Swagger для моего сервиса:

@Configuration
@EnableSwagger2
public class SwaggerConfig {
    @Bean
    public Docket api() {
        return new Docket(DocumentationType.SWAGGER_2)
            .select()
            .apis(RequestHandlerSelectors.any())
            .paths(PathSelectors.any())
            .build();
    }
}

Я запускаю свой сервис, затем перехожу на http://localhost:8080/v2/api-docs (откуда подается Swagger) и затем вставляю этот JSON в jsonlint.com и я вижу, что Spring Boot автоматически добавляет примерно 40 конечных точек, что я не хочу Swagger для документа.Такие вещи, как конечная точка /trace, /health, /env, /beans и т. Д. Это все, что создает Spring Boot Actuator, но я не хочу, чтобы он был включен в мою общедоступную документацию API.

Есть ли способ настроить Swagger на , а не документировать эти конечные точки уровня инфраструктуры?

Ответы [ 2 ]

0 голосов
/ 19 ноября 2018
RequestHandlerSelectors.any()

предоставит доступ ко всем конечным точкам вашего проекта.

В верхней части вышеприведенного ответа вы можете добавить приведенный ниже код для ограничения доступа к API, указав имя базового пакета в RequestHandlerSelectors.basePackage () метод.

@Bean
public Docket api() { 
    return new Docket(DocumentationType.SWAGGER_2)  
      .select()                                  
      .apis(RequestHandlerSelectors.basePackage("com.assingment.scalableweb"))
      .paths(PathSelectors.any())                          
      .build()
      .apiInfo(metaData())
      .tags(new Tag("DifferenceController", "Operations related to the Json Data")); 
}
0 голосов
/ 06 июля 2018

Использование any() сделает документацию для всего вашего API доступной через Swagger. Используйте PathSelectors.ant() для ограничения ваших конечных точек. Что-то вроде

.paths(PathSelectors.ant("/finance/**")) будет отображать только конечные точки под /finance/

...