如何从Swagger UI隐藏存储库控制器

时间:2016-10-26 13:27:28

标签: java spring spring-boot spring-data-rest

我使用的是spring-boot-starter-parent 1.3.3.RELEASE。我无法在Swagger UI中禁用存储库控制器

enter image description here

我已使用此link禁用了其他不需要的端点。

如何从swagger UI禁用存储库控制器?请提供您的意见

如果使用follow,它只返回由我编写的搜索存储库,但我也需要实体端点。这些实体端点将按弹簧默认值返回。

.apis(RequestHandlerSelectors.basePackage("bla.blablah.bla"))

请参考图片:enter image description here

2 个答案:

答案 0 :(得分:0)

初始化Docket课程中的Application时,您可以轻松过滤包名称,因此只会为给定的基础包创建您的API:

@Bean
public Docket swaggerSpringMvcPlugin(){
    return new Docket( DocumentationType.SWAGGER_2 )//
            .select().apis( RequestHandlerSelectors.basePackage( "com.blabla.bla" ) )//
            .build();
}

另一种解决方案:

return new Docket(DocumentationType.SWAGGER_2).apiInfo(apiInfo()).select() 
          .apis(Predicates.not(RequestHandlerSelectors.basePackage("org.springframework.boot")))
             .build();

答案 1 :(得分:0)

我通过创建自己的Predicate并将其添加到Docket配置来解决了同样的问题。您可以从RequestHandler对象获取组名(存储库控制器)。

我的代码:

@Bean
public Docket api() { 
    return new Docket(DocumentationType.SWAGGER_2)  
        .select()                                  
          .apis(GroupNameFilter())
          .build();                                           
}

private Predicate<RequestHandler> GroupNameFilter(){
    return new Predicate<RequestHandler>() {
        @Override
        public boolean apply(RequestHandler input) {
            return !input.groupName().equals("repository-controller");  
        }
  };
}