Swagger作为一款非常盛行的API文档生成工具,信赖许多小伙伴都在用。Swagger最为便利的当地在于,你的项目只需集成了它,一发起就能生成最新版文档,并且可以在线调试。不过Swagger的接口调试功用的确有许多缺陷,比如对JSON支撑不太友爱。今天我们运用Knife4j来增强下它,运用的是SpringDoc供应的Swagger完结库,期望对我们有所协助!
SpringBoot实战电商项目mall(50k+star)地址:github.com/macrozheng/…
聊聊Swagger的Java库
首先我们来聊聊Java中两种比较盛行的两种Swagger完结库,对比下哪个更好用。
SpringFox
SpringFox是老牌的Swagger完结库,Github上标星5.6K+
,信赖许多小伙伴项目中都集成的是这个库。不过该完结库在两年前发了3.0.0
版别后就再也没发版别了。
并且假设你在SpringBoot 2.6.x版别以上运用的话,会发现许多问题需求自行解决,具体可以参阅升级 SpringBoot 2.6.x 版别后,Swagger 无法用了! 。
SpringDoc
SpringDoc是最近才盛行起来的Swagger完结库,Github上标星2K+
,版别更新仍是很快的,维护更新有确保。之前写过一篇SpringDoc运用教程 我们可以参阅下。
SpringDoc的功用仍是挺健壮的,不仅支撑Spring WebMvc项目,还可以支撑Spring WebFlux项目。
该选哪个
假设你的项目中现已集成了SpringFox并大量运用了,仍是仍然运用SpringFox吧,终究搬迁也是需求成本的。假设你的项目是新项目现在正在技术选型阶段可以考虑运用SpringDoc,终究更新维护更有确保。
SpringDoc结合Knife4j运用
Knife4j是一款Swagger UI增强库,之前一贯以为它只支撑SpringFox,最近发现它也支撑了SpringDoc。Knife4j可以无缝支撑SpringDoc,仅需增加一个依靠即可,无需批改任何用法,非常便利!
- 这儿我们仍是运用SpringDoc运用教程 中的
mall-tiny-springdoc
Demo,首先在pom.xml
中增加Knife4j相关依靠;
<!--Knife4j的Swagger皮肤依靠-->
<dependency>
<groupId>com.github.xiaoymin</groupId>
<artifactId>knife4j-springdoc-ui</artifactId>
<version>3.0.3</version>
</dependency>
- 然后将项目发起起来,拜访下Knife4j的默认接口文档地址:http://localhost:8088/doc.html
- 我们找一个需求提交JSON格局恳求参数的接口调试下,发现关于JSON格局参数,Knife4j供应了格局校验功用;
- 再找个回来数据比较长的接口调试下,Knife4j供应了数据折叠功用,这两个功用的确是我们比较需求的。
Knife4j微服务解决方案更新
之前出了套微服务聚合Swagger的API文档解决方案 ,也运用了Knife4j,最近把它更新支撑了最新版Spring Cloud,这儿我们再来聊聊这个解决方案。
完结原理
我们抱负的解决方案应该是这样的,网关作为API文档的一致进口,网关聚合一切微服务的文档,通过在网关进行切换来完结对其他服务API文档的拜访。
相关服务区分:
- micro-knife4j-gateway:网关服务,作为微服务API文档的拜访进口,聚合一切API文档,需求引进文档前端UI包;
- micro-knife4j-user:用户服务,一般API服务,不需求引进文档前端UI包;
- micro-knife4j-order:订单服务,一般API服务,不需求引进文档前端UI包。
项目地址
github.com/macrozheng/…
总结
像Knife4j这种,不改动Swagger本来的运用,能对Swagger进行功用增强的库的确很不错。要是能多几种这种换皮肤的完结库的话,Swagger的运用体会应该会更好!
项目源码地址
github.com/macrozheng/…