目前很多的后台都开始使用swagger来写文档接口了,但是swagger有很多限制:
1、swagger不支持头部自定义加入参数,如果是头部有token等之类参数要放入时swagger就无法调试接口了,只有看的份了。
2、swagger对application/json请求的类型的确实很友好,但是对于表单类型的application/x-www-form-urlencoded就很不友好了,你使用了设置了隐藏某个字段,他都会显示出来,并且不管层级都是解析成一个层级,显示就是xxx.xx,字段多了看到都是烦恼呀。
3、swagger还不支持离线查看等。。。。。
很多公众号现在都看到在推广knife4j(前身swagger-bootstrap-ui),其实看了他们的文章我也很认同他们的做法,虽然现在knife4j做得不是很全面,但是在ui、调试、离线文档都做了优化。本文主要做了一个小demo(代码就主要放在码云:
https://gitee.com/yh128/SpringDemoProject
上面了,这里就讲一下重要的配置),让读者理性去选择使用的工具,说到底适合自己的才是最好的嘛。
看了代码以后可以发现,我们配置里面为什么还有swagger的依赖引入呢?
<dependency>
<groupId>com.github.xiaoymin</groupId>
<artifactId>knife4j-spring-boot-starter</artifactId>
<version>2.0.2</version>
</dependency>
<!-- swagger 依赖包 -->
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger-ui</artifactId>
<version>2.9.2</version>
</dependency>
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger2</artifactId>
<version>2.9.2</version>
<exclusions>
<exclusion>
<artifactId>swagger-annotations</artifactId>
<groupId>io.swagger</groupId>
</exclusion>
<exclusion>
<artifactId>swagger-models</artifactId>
<groupId>io.swagger</groupId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>io.swagger</groupId>
<artifactId>swagger-annotations</artifactId>
<version>1.6.0</version>
</dependency>
<dependency>
<groupId>io.swagger</groupId>
<artifactId>swagger-models</artifactId>
<version>1.6.0</version>
</dependency>
引入了swagger主要的话引入的是ui,这样就可以使用swagger原有的功能,
为什么还要单独的引入了swagger-annotations 和swagger-models呢?
其实有时候注解上的示例和类型不对的时候会报错,加入这两个依赖包就不会了。
运行以后分别是两者的界面:
knife4j这个界面就很养眼,下面就讲解一下knife4j的优点:
1、可以自己配置请求头等信息
2、离线文档的支持(目前支持了md和html)
3、请求参数层次分明
4、请求实体可以快速找到
5、请求类型方式可以选择
6、请求返回数据可以选择说明同时显示
其他还有很多功能都还不错,它还在完善中优化中,这个是不错的工具,如果适合你就快去试试嘛,如果不想侵入形式的那可以考虑其他的在线文档showdoc,yapi等,感觉都还不错。
说白了这只是工具,使用工具主要的目的就是提高效率,提高质量,所以取舍就看自己了。
文章同时会更新到公众号,觉得对你有帮助或者有用的可以关注一下哦