2015-06-10 1 views
2

У меня есть приложение API, созданное с помощью Spring Boot. Я использовал swagger-springmvc v0.9.5 плагин вместе с пользовательским интерфейсом Swagger для создания интерактивной документации и интерфейса взаимодействия с API-методами.Как скрыть Spring OAuth2 от конечных точек Swagger?

Недавно я представила Spring Security и OAuth для приложения. Это внесло еще несколько разделов, появляющихся в Swagger UI для:

  • разрешение конечных точек, который имеет кучу HTTP доступных операций по /oauth/authorize пути
  • чек-маркер конечных точек, который имеет кучу по HTTP операций, доступных в рамках /oauth/check_token пути
  • WhiteLabel-утверждение-конечная точка, которая имеет кучу HTTP доступных операций по /oauth/confirm_access пути
  • WhiteLabel ошибок конечных точек, которая имеет кучу HTTP доступных операций по /oauth/error пути

Я могу понять, для чего они, но я не хочу, чтобы они появлялись в моем Кураж UI переднего конца. Как скрыть их?

com.mangofactory.swagger.plugin.SwaggerSpringMvcPlugin конфигурация предлагает метод includePatterns(), но не позволяет исключить шаблоны. С includePatterns() каждый раз, когда кто-то добавляет метод API, нужно будет запомнить его там, что не идеально. У меня нет общего префикса для всех методов API, с которыми я могу использовать includePatterns().

+0

Я знаю, что это год, но почему бы не просто префикс все методы с/API /, а затем вы можете использовать '.includePatterns («/ API /.*»)' – Shark

+0

Как я уже сказал в самом вопросе: у меня нет общего префикса для всех методов API, с которыми я могу использовать includePatterns(). –

+0

Да, я просто предлагал работать, чтобы заставить все методы иметь общий префикс и использовать какой-то общий префикс (т. Е./Api/для всех). Но я могу понять, если это невозможно, если api уже используются – Shark

ответ

0

У меня была та же проблема. Я разрешил его, изменив параметры создания Docket. я использовал

@Bean 
public Docket oAuthService() { 
    return new Docket(DocumentationType.SWAGGER_2) 
      .select() 
      .apis(RequestHandlerSelectors.any()) 
      .paths(PathSelectors.any()) 
      .build() 
      .pathMapping("/") 
      .directModelSubstitute(LocalDate.class, 
        String.class) 
      .genericModelSubstitutes(ResponseEntity.class) 
      .alternateTypeRules(
        newRule(typeResolver.resolve(DeferredResult.class, 
          typeResolver.resolve(ResponseEntity.class, WildcardType.class)), 
          typeResolver.resolve(WildcardType.class))) 
      .useDefaultResponseMessages(false) 
      .globalResponseMessage(RequestMethod.GET, 
        newArrayList(new ResponseMessageBuilder() 
          .code(500) 
          .message("500 message") 
          .responseModel(new ModelRef("Error")) 
          .build())) 
      .securitySchemes(newArrayList(apiKey())) 
      .securityContexts(newArrayList(securityContext())) 
      .enableUrlTemplating(true) 
      .tags(new Tag("Oauth Service", "Oauth Service")); 
} 

в результате чего все весенне-OAuth конечные точки являются частью моей развязность спецификации. Я изменил зарегистрированный apis для использования моего basePackage вместо any(). Что-то вроде этого:

.apis(RequestHandlerSelectors.basePackage("my.base.package.name")) 
Смежные вопросы