API文档工具
SpringBoot实战电商项目mall(50k+star)地址:https://github.com/macrozheng/mall
Swagger
Swagger是一款非常流行的API文档工具,它能帮助你简化API文档的开发,极大提高开发效率,之前在mall项目中就是使用的它。
我们一般将Swagger和SpringBoot结合使用,使用的是Springfox给我们提供的工具。使用该工具可以根据注解自动生成API文档,并且可以在生成的文档上进行接口调试。
由于API文档随着项目的启动而更新,所以API文档的实时性很有保证!Springfox官方还给我们提供了Starter,整合非常方便,如果你还在SpringBoot项目中手动整合Swagger的话,不妨看下《还在手动整合Swagger?Swagger官方Starter是真的香!》 。
项目地址:https://github.com/springfox/springfox
Knife4j
- gitee地址:https://gitee.com/xiaoym/knife4j
- 开源协议:Apache-2.0 License
- Star: 3k
- 开发语言:java、javascript
- 用户:未知
- 推荐指数:★★★★
虽然Swagger已经非常好用,但是存在界面不够美观,API调试功能弱的缺点,比如请求参数没有校验,返回一堆JSON数据时无法折叠这类问题。于是在Swagger的基础上,就有了一些增强工具的出现。
Knife4j是springfox-swagger的增强UI实现,为Java开发者在使用Swagger的时候,提供了简洁、强大的接口文档体验。Knife4j完全遵循了springfox-swagger中的使用方式,并在此基础上做了增强功能,如果你用过Swagger,你就可以无缝切换到Knife4j。
使用Knife4j就好像给Swagger换了个新皮肤,瞬间就高大上了,具体使用可以参考《给Swagger换了个新皮肤,瞬间高大上了!》 。
如果你的项目是微服务项目的话,使用Knife4j可以聚合所有服务的文档,具体使用可以参考《微服务聚合Swagger文档,这波操作是真的香!》 。
项目地址:https://github.com/xiaoymin/swagger-bootstrap-ui
优点:基于swagger生成实时在线文档,支持在线调试,全局参数、国际化、访问权限控制等,功能非常强大。
缺点:界面有一点点丑,需要依赖额外的jar包
个人建议:如果公司对ui要求不太高,可以使用这个文档生成工具,比较功能还是比较强大的。
Postman
由于Swagger的接口调试能力比较弱,使用Postman来调试也不失为一个好方案。
Postman是一款API接口调试工具,使用它可以很方便的对接口进行测试,并且后端人员可以将自己的调试结果导出,方便前端人员调试,具体使用可以参考《Postman:API接口调试利器》 。
当然在Postman中查看API文档也是可以的,只是功能有点偏弱,所以才有了Swagger+Postman这种流行组合,具体可以参考《Swagger界面丑、功能弱怎么破?用Postman增强下就给力了!》 。
YApi
- github地址:https://github.com/YMFE/yapi
- 开源协议:Apache-2.0 License
- Star: 17.8k
- 开发语言:javascript
- 用户:腾讯、阿里、百度、京东等大厂
- 推荐指数:★★★★★
除了Knife4j这类给Swagger做增强的工具,还有一类工具本身就具有API文档管理的功能,可独立部署并且可以对接Swagger,功能更加强大,也可以称之为API文档管理平台。
YApi正是这样一种工具,YApi是高效、易用、功能强大的API管理平台,旨在为开发、产品、测试人员提供更优雅的接口管理服务。YApi在Github上已累计获得了18K+Star,具有优秀的交互体验,YApi不仅提供了常用的接口管理功能,还提供了权限管理、Mock数据、Swagger数据导入等功能,总之功能很强大!
YApi的具体使用可以参考《当Swagger遇上YApi,瞬间高大上了!》 。
项目地址:https://github.com/YMFE/yapi
yapi是去哪儿前端团队自主研发并开源的,主要支持以下功能:
- 可视化接口管理
- 数据mock
- 自动化接口测试
- 数据导入(包括swagger、har、postman、json、命令行)
- 权限管理
- 支持本地化部署
- 支持插件
- 支持二次开发
优点:功能非常强大,支持权限管理、在线调试、接口自动化测试、插件开发等,BAT等大厂等在使用,说明功能很好。
缺点:在线调试功能需要安装插件,用户体检稍微有点不好,主要是为了解决跨域问题,可能有安全性问题。不过要解决这个问题,可以自己实现一个插件,应该不难。
个人建议:如果不考虑插件安全的安全性问题,这个在线文档工具还是非常好用的,可以说是一个神器,笔者在这里强烈推荐一下。
smart-doc
- 开源协议:Apache-2.0 License
- Star: 758
- 开发语言:html、javascript
- 用户:小米、科大讯飞、1加
- 推荐指数:★★★★
Swagger需要通过它自己的注解来实现API文档的生成,代码入侵性有点强,如果你想零入侵的话,不妨试试smart-doc
。
smart-doc
是一款API文档生成工具,无需多余操作,只要你规范地写好代码注释,就能生成API文档。同时能直接生成Postman调试文件,一键导入Postman即可调试,非常好用!
smart-doc
和Swagger的接口调试能力一样,都比较弱,也得配合Postman来使用,具体可以参考《还在用Swagger?试试这款零注解侵入的API文档生成工具,跟Postman绝配!》 。
项目地址:https://gitee.com/smart-doc-team/smart-doc
优点:基于接口源码分析生成接口文档,零注解侵入,支持html、pdf、markdown格式的文件导出。
缺点:需要引入额外的jar包,不支持在线调试
个人建议:如果实时生成文档,但是又不想打一些额外的注解,比如:使用swagger时需要打上@Api、@ApiModel等注解,就可以使用这个。
Torna
又一款可独立部署的API文档管理工具,可以搭建API文档管理平台。不仅支持Swagger导入、还支持Postman和OpenApi等导入。
Torna是一套企业级接口文档解决方案,可以配合Swagger使用,具体参考《当 Swagger 遇上 Torna,瞬间高大上了!》 。它具有如下功能:
- 文档管理:支持接口文档增删改查、接口调试、字典管理及导入导出功能;
- 权限管理:支持接口文档的权限管理,同时有访客、开发者、管理员三种角色;
- 双模式:独创的双模式,管理模式可以用来编辑文档内容,浏览模式纯粹查阅文档,界面无其它元素干扰。
项目地址:https://gitee.com/durcframework/torna
Apifox
一款在线使用的API文档管理工具,可以配合Swagger使用,功能强大,界面炫酷!
Apifox 的定位是Postman + Swagger + Mock + JMeter
,具有API文档管理、API调试、API Mock、API 自动化测试等功能。可以通过一种工具解决之前使用多种工具的数据同步问题。高效、及时、准确!
具体使用可以参考:《取代 Postman + Swagger!这款神器功能更强大,界面更炫酷!》 。
8、gitbook
- github地址:https://github.com/GitbookIO/gitbook
- 开源协议:Apache-2.0 License
- Star: 22.9k
- 开发语言:javascript
- 用户:50万+
- 推荐指数:★★★
示例地址:https://www.servicemesher.com/envoy/intro/arch_overview/dynamic_configuration.html
gitBook是一款文档编辑工具。它的功能类似金山WPS中的word或者微软office中的word的文档编辑工具。它可以用来写文档、建表格、插图片、生成pdf。当然,以上的功能WPS、office可能做得更好,但是,gitBook还有更最强大的功能:它可以用文档建立一个网站,让更多人了解你写的书,另外,最最核心的是,他支持Git,也就意味着,它是一个分布式的文档编辑工具。你可以随时随地来编写你的文档,也可以多人共同编写文档,哪怕多人编写同一页文档,它也能记录每个人的内容,然后告诉你他们之间的区别,也能记录你的每一次改动,你可以查看每一次的书写记录和变化,哪怕你将文档都删除了,它也能找回来!这就是它继承git后的厉害之处!
优点:使用起来非常简单,支持全文搜索,可以跟git完美集成,对代码无任何嵌入性,支持markdown格式的文档编写。
缺点:需要单独维护一个文档项目,如果接口修改了,需要手动去修改这个文档项目,不然可能会出现接口和文档不一致的情况。并且,不支持在线调试功能。
个人建议:如果对外的接口比较少,或者编写之后不会经常变动可以用这个。
3、redoc
- github地址:https://github.com/Redocly/redoc
- 开源协议:MIT License
- Star: 10.7K
- 开发语言:typescript、javascript
- 用户:docker、redocly
- 推荐指数:★★★☆
示例地址:https://docs.docker.com/engine/api/v1.40/
redoc自己号称是一个最好的在线文档工具。它支持swagger接口数据,提供了多种生成文档的方式,非常容易部署。使用redoc-cli能够将您的文档捆绑到零依赖的 HTML文件中,响应式三面板设计,具有菜单/滚动同步。
优点:非常方便生成文档,三面板设计
缺点:不支持中文搜索,分为:普通版本 和 付费版本,普通版本不支持在线调试。另外UI交互个人感觉不适合国内大多数程序员的操作习惯。
个人建议:如果想快速搭建一个基于swagger的文档,并且不要求在线调试功能,可以使用这个。
6、apidoc
- github地址:https://github.com/apidoc/apidoc
- 开源协议:MIT License
- Star: 8.7k
- 开发语言:javascript
- 用户:未知
- 推荐指数:★★★★☆
示例地址:https://apidocjs.com/example/#api-User
apidoc是一个简单的 RESTful API 文档生成工具,它从代码注释中提取特定格式的内容生成文档。支持诸如 Go、Java、C++、Rust 等大部分开发语言,具体可使用 apidoc lang 命令行查看所有的支持列表。
apidoc 拥有以下特点:
- 跨平台,linux、windows、macOS 等都支持;
- 支持语言广泛,即使是不支持,也很方便扩展;
- 支持多个不同语言的多个项目生成一份文档;
- 输出模板可自定义;
- 根据文档生成 mock 数据;
优点:基于代码注释生成在线文档,对代码的嵌入性比较小,支持多种语言,跨平台,也可自定义模板。支持搜索和在线调试功能。
缺点:需要在注释中增加指定注解,如果代码参数或类型有修改,需要同步修改注解相关内容,有一定的维护工作量。
个人建议:这种在线文档生成工具提供了另外一种思路,swagger是在代码中加注解,而apidoc是在注解中加数据,代码嵌入性更小,推荐使用。
7、showdoc
- github地址:https://github.com/star7th/showdoc
- 开源协议:Apache Licence
- Star: 8.1k
- 开发语言:javascript、php
- 用户:超过10000+互联网团队正在使用
- 推荐指数:★★★★☆
示例地址:https://www.showdoc.com.cn/demo?page_id=9
ShowDoc就是一个非常适合IT团队的在线文档分享工具,它可以加快团队之间沟通的效率。
它都有些什么功能:
- 响应式网页设计,可将项目文档分享到电脑或移动设备查看。同时也可以将项目导出成word文件,以便离线浏览。
- 权限管理,ShowDoc上的项目有公开项目和私密项目两种。公开项目可供任何登录与非登录的用户访问,而私密项目则需要输入密码验证访问。密码由项目创建者设置。
- ShowDoc采用markdown编辑器,点击编辑器上方的按钮可方便地插入API接口模板和数据字典模板。
- ShowDoc为页面提供历史版本功能,你可以方便地把页面恢复到之前的版本。
- 支持文件导入,文件可以是postman的json文件、swagger的json文件、showdoc的markdown压缩包,系统会自动识别文件类型。
优点:支持项目权限管理,多种格式文件导入,全文搜索等功能,使用起来还是非常方便的。并且既支持部署自己的服务器,也支持在线托管两种方式。
缺点:不支持在线调试功能
个人建议:如果不要求在线调试功能,这个在线文档工具值得使用。
9.Apipost和apifox一样
Apipost是一款集API调试、生成文档、Mock、测试于一体的协同工具。单个工具可以同时满足接口测试、生成/分享文档、Mock、流程测试等功能,还有超实用的多人多角色间实时协作的功能。将前端、后端、测试三种角色串联起来,从而实现工作流程无缝衔接、提高研发效率!
总结
本文整理了之前使用过的7种API文档生成+管理工具,如果你是刚开始使用API文档工具的话,使用Swagger准没错!如果你正在使用Swagger,想要使用更好的API文档工具的话,可以考虑将Swagger配合Knife4j、YApi或Torna来使用。如果你不介意在线使用API文档管理工具的话,可以使用Apifox,它的功能更强大。