Swagger中过滤掉任意API接口的方法

Swagger中过滤掉任意API接口的方法

Swagger是目前最受欢迎的REST APIs文档生成工具,同时也是API的在线测试工具。功能强大谁用谁知道。我就不用在这里推广它了。今天要解决的问题是:如果让一些特定的API接口在Swagger中不显示,即从Swagger中过滤掉一些不想展示的接口?

通常我们使用Swagger都是通过指定要扫描的包或者扫描具有某些注解的Controller,来生成API,那么如果这其中还想过滤掉一些特定API怎么做呢?可以在构建Docket的时候,在apis()方法中传入Predicate<RequestHandler>实例,来进行更加精细的过滤。

1、先看下Docket的定义,这里在apis方法中,传入Predicate<RequestHandler>列表

2、接下来是私有方法apis()的定义,使用Predicate<RequestHandler>可以拿到一个类型为RequestHandler参数,从RequestHandler中可以拿到一个API的详细信息,包括方法、注解,路径等信息,根据这些条件来判断是否需要过滤掉。

3、SwaggerApiFilter是我定义的一个接口,用来编写具体的过滤方式。下面看一个该接口的具体实现类:

通过这种方式就可以过滤掉一些特定的API,不在Swagger的页面上展示了。

本文作者:大席
首发网站:大席的博客
版权声明:本博客所有文章除特别声明外,均为原创作品,转载请附带本段文字并注明本文出处

You may also like...

发表评论

电子邮件地址不会被公开。 必填项已用*标注

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据