目前很多的後臺都開始使用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等,感覺都還不錯。
說白了這只是工具,使用工具主要的目的就是提高效率,提高質量,所以取捨就看自己了。
文章同時會更新到公衆號,覺得對你有幫助或者有用的可以關注一下哦