在 swagger 3.0 上隐藏端点 UI

Hide endpoint on swagger 3.0 UI

我想要一个私有端点,它应该隐藏在 Swagger 上 API UI.

参考我创建过滤器 class 的其他一些帖子,如下所示。

public class Myfilter implements SwaggerSpecFilter
public class MySwaggerSpecFilter implements SwaggerSpecFilter {
  @Override
     public boolean isOperationAllowed(Operation operation, ApiDescription api, Map<String, List<String>> params,
             Map<String, String> cookies, Map<String, List<String>> headers){}
 
 @Override
     public boolean isParamAllowed..
 
 @Override
     public boolean isPropertyAllowed...
 }

public MyApplication extends Application {
@Override
 public Set<Class<?>> getClasses()
 {
     final Set<Class<?>> classes = new HashSet<>();

     // Set Swagger Filter
     FilterFactory.setFilter(new MySwaggerSpecFilter());
}
}

Web.xml

<servlet>
     <servlet-name>myservlet</servlet-name>
     <servlet-class>ServletClass</servlet-class>
     <init-param>
         <param-name>javax.ws.rs.Application</param-name>
         <param-value>PATHTO/MyApplication</param-value>
     </init-param>
     <load-on-startup>1</load-on-startup>
 </servlet>

我看到在加载 Swagger 时没有调用 isOperationAllowed UI。什么时候调用 isOperationAllowed 方法?

  • 尝试将 @ApiIgnore 添加到控制器中的方法 class
  • 另一种方法是添加@ApiOperation(hidden = true)

正如您已经指定的那样,您不能在控制器顶部使用任何注释,因为您要隐藏的端点是自动生成的。在这种情况下,一种可能的解决方案是通过 any() 选择器使用 ant() 选择器来选择路径,如下所示 -

而不是使用这个 .paths(PathSelectors.any()) 使用 .paths(PathSelectors.ant("/path-to-match/**"))

特定于 spring-boot 而不是使用以下代码 -

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

使用下面的代码 -

@Configuration
@EnableSwagger2
public class SwaggerConfig {
    @Bean
    public Docket api() {
        return new Docket(DocumentationType.SWAGGER_2)
            .select()
            .apis(RequestHandlerSelectors.any())
            .paths(PathSelectors.ant("/path-to-match/**")) <<<<<
            .build();
    }
}