干掉 Postman?测试接口直接生成API文档,这个工具贼好用

本文介绍了如何使用ShowDoc作为在线API文档工具,并结合Runapi测试工具实现自动化文档生成。通过Runapi调试接口时,可以自动生成API文档,提高开发效率。同时,ShowDoc还支持从代码注释中生成文档和数据字典,提供版本控制和权限管理,适合团队协作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前几天粉丝群有小伙伴问,有啥好用的API文档工具推荐,无意间发现了一款工具,这里马不停蹄的来给大家分享一下。

ShowDoc一个非常适合团队的在线API文档工具,也支持用docker自建文档服务,不过为了方便演示,我直接用了平台在线服务。官网地址:

https://www.showdoc.com.cn/item/index 

可以使用markdown语法来写API文档、数据字典文档、技术文档、在线excel文档。但像我这种资深的懒人程序员,其实更看重的是showdoc的自动化生成文档的特性,它可以从代码注释中自动生成API文档,或者搭配RunApi客户端(类似postman的api调试工具)一边调试接口、一边自动生成文档。

下边从头演示下,来瞅瞅这玩意好用在哪?

主页

初识 ShowDoc

ShowDoc新建项目可选常规的API文档、在线表格、或者单页文档(不支持目录分层),允许对项目文档设置访问密码,自定义域名,这里并不是真正意义上的“域名”,只是在文档服务域名后加了一级目录,例如:

www.showdoc.com.cn/程序员内点事 

可以复制现有的项目,或直接导入Postmanswagger的API接口配置Json文件。提供的开放API是自动化生成文档的关键,先记住有api_keyapi_token这两个属性,后边详细讲。

进入项目后点击右上角 + 编辑文档,ShowDoc预置了几种文档模板,也可以把自定义的文档存为模板;支持在线Mock服务,提前定义好接口的数据格式,先提供在线临时接口,这样就可以和前端同步开发,后边无缝切换;还有个简单的API在线测试功能。

在线表格样式很简洁

导出文档有wordMarkdown两种格式。

支持版本控制,能看到每次修改的记录,回滚任意一个版本的修改。

在向别人分享在线文档时,如果不想将整个API目录都暴漏,可以选择进行单页面分享。

看到这感觉showdoc很普通啊,好像没什么特别的地方,上边的这些文档都是需要我们手动书写的,比较繁琐不推荐这么搞,接下来咱们看看如何自动化生成文档。

自动生成文档

showdoc有三种自动生成API文档的方式:

  • 使用Runapi工具自动生成(推荐
  • 使用程序代码注释自动生成
  • 自动生成数据字典
  • 自己写程序调用接口来生成

Runapi工具

Runapi是一个以接口为核心的开发测试工具(可以看做是Postman的精简版)。目前客户端支持winmaclinux平台和在线版 ,包含接口测试、自动流程测试、Mock数据、项目协作等功能。

单纯的RunapiPostman相比优势并不大,而与showdoc配合使用效率比较显著,用runapi测试接口的同时它将自动生成API文档到showdoc,也可共用showdoc的团队管理机制实现多人协作。

Runapi客户端可以创建带调试的API接口文档、或者Markdown格式的文档。

比如我们新建个项目“程序员内点事”,分别建三个接口“点在”、“在看”、“关注”,紧接着快速生成参数和响应结果数据并保存。

点击右上角的文档链接设置访问密码,不填默认是公开的,复制文档链接在浏览器中打开,看到API接口文档已经生成。runapi还有全局参数、环境隔离。其实Postman也支持这样的功能,不过毕竟不是国内产品,网络访问等方面很受限制。

还有一个比较好的地方,Runapi支持接口执行前后的脚本,比如响应数据的断言测试,弹框显示都挺好用的。

代码注释

把接口的信息写在注释里也可以自动生成文档到showdoc,但这种我并不太喜欢,主要是侵入性比较强,让代码的阅读性变的比较差,一坨坨看着很不爽。

 /**
	* showdoc
	* @catalog 测试文档/用户相关
	* @title 用户注册
	* @description 用户注册的接口
	* @method post
	* @url https://www.showdoc.com.cn/home/user/login
	* @param username 必选 string 用户名  
	* @param password 必选 string 密码  
	* @param name 可选 string 用户昵称  
	* @return {"error_code":0,"data":{"uid":"1","username":"12154545","name":"吴系挂","groupid":2,"reg_time":"1436864169","last_login_time":"0"}}
	* @return_param groupid int 用户组id
	* @return_param name string 用户昵称
	* @remark 这里是备注信息
	* @number 99
	*/
	public Object register(){ 

这种方式的实现也比较简单,还记得前边的提到的api_keyapi_token这两个属性嘛,现在派上用场了,下边我用windows环境演示。

首先本地要有git环境:

https://npm.taobao.org/mirrors/git-for-windows/v2.17.0.windows.1/Git-2.17.0-64-bit.exe 

再下载showdoc官方提供的脚本

https://www.showdoc.cc/script/showdoc_api.sh 

修改showdoc_api.sh,替换我们api_keyapi_token变量值,URL如果没搭建自己的文档服务不用改。

showdoc_api.sh放在你的项目目录下,直接双击运行,脚本会自动递归扫描本目录和子目录的所有文本代码文件,并生成API文档。

showdoc_api.sh生成的文档会放进你填写api_token的这个项目里。

生成数据字典

如果我们想直接从数据库字典表生成数据字典文档,showdoc也是支持的,先下载官方提供的脚本

wget https://www.showdoc.cc/script/showdoc_db.sh 

修改脚本里的配置,数据库、api_keyapi_token等信息,直接执行后数据库表结构信息同步到showdoc

如下配置的变量名和解释

效果就是如下图这样,生成了数据表字典文档,在一些特定场景下还是很方便的。

开放API

showdoc开放了文档编辑的API,我们可以在代码中调用API创建、编辑文档。这样使用的场景就比较灵活了。

https://www.showdoc.cc/server/api/item/updateByApi 

API参数如下,文档内容,可传递markdown格式的文本或者html源码都可以。

测试一下接口组装必要的参数,用简易在线API调试工具发送

{
  "api_key": "8e52cbad736aa9832b92acc4b34a830e961861279",
  "api_token": "9dcd8333afa7cde63bf84f8f0db5d2b2116079256",
  "page_title": "xiaofu",
  "page_content": "nihao"
} 

看到在showdoc对应的项目里已经创建了名字为xiaofu的文档。

说两句

前边说过showdoc现有的功能postman基本都支持,但postman功能过于繁杂不够简洁,加上网络条件等诸多限制,协同办公的效率并不高,而Runapi配合showdoc在某些场景下能够很大程度上提升我们开发交付的效率,所以能自动生成的绝对不手写!

再怎么BB吹嘘都是苍白的,好不好用,适不适合自己,动手搞一下一目了然

一千道互联网 Java 工程师面试题

内容涵盖:Java、MyBatis、ZooKeeper、Dubbo、Elasticsearch、Memcached、Redis、MySQL、Spring、SpringBoot、SpringCloud、RabbitMQ、Kafka、Linux等技术栈(485页)

初级—中级—高级三个级别的大厂面试真题

阿里云——Java 实习生/初级

List 和 Set 的区别 HashSet 是如何保证不重复的

HashMap 是线程安全的吗,为什么不是线程安全的(最好画图说明多线程环境下不安全)?

HashMap 的扩容过程

HashMap 1.7 与 1.8 的 区别,说明 1.8 做了哪些优化,如何优化的?

对象的四种引用

Java 获取反射的三种方法

Java 反射机制

Arrays.sort 和 Collections.sort 实现原理 和区别

Cloneable 接口实现原理

异常分类以及处理机制

wait 和 sleep 的区别

数组在内存中如何分配

答案展示:

美团——Java 中级

BeanFactory 和 ApplicationContext 有什么区别

Spring Bean 的生命周期

Spring IOC 如何实现

说说 Spring AOP

Spring AOP 实现原理

动态代理(cglib 与 JDK)

Spring 事务实现方式

Spring 事务底层原理

如何自定义注解实现功能

Spring MVC 运行流程

Spring MVC 启动流程

Spring 的单例实现原理

Spring 框架中用到了哪些设计模式

为什么选择 Netty

说说业务中,Netty 的使用场景

原生的 NIO 在 JDK 1.7 版本存在 epoll bug

什么是 TCP 粘包/拆包

TCP 粘包/拆包的解决办法

Netty 线程模型

说说 Netty 的零拷贝

Netty 内部执行流程

答案展示:

蚂蚁金服——Java 高级

题 1:

  1. jdk1.7 到 jdk1.8 Map 发生了什么变化(底层)?

  2. ConcurrentHashMap

  3. 并行跟并发有什么区别?

  4. jdk1.7 到 jdk1.8 java 虚拟机发生了什么变化?

  5. 如果叫你自己设计一个中间件,你会如何设计?

  6. 什么是中间件?

  7. ThreadLock 用过没有,说说它的作用?

  8. Hashcode()和 equals()和==区别?

  9. mysql 数据库中,什么情况下设置了索引但无法使用?

  10. mysql 优化会不会,mycat 分库,垂直分库,水平分库?

  11. 分布式事务解决方案?

  12. sql 语句优化会不会,说出你知道的?

  13. mysql 的存储引擎了解过没有?

  14. 红黑树原理?

题 2:

  1. 说说三种分布式锁?

  2. redis 的实现原理?

  3. redis 数据结构,使⽤场景?

  4. redis 集群有哪⼏种?

  5. codis 原理?

  6. 是否熟悉⾦融业务?记账业务?蚂蚁⾦服对这部分有要求。

好啦~展示完毕,大概估摸一下自己是青铜还是王者呢?

前段时间,在和群友聊天时,把今年他们见到的一些不同类别的面试题整理了一番,于是有了以下面试题集,也一起分享给大家~

如果你觉得这些内容对你有帮助,可以加入csdn进阶交流群,领取资料

基础篇


JVM 篇


MySQL 篇



Redis 篇




由于篇幅限制,详解资料太全面,细节内容太多,所以只把部分知识点截图出来粗略的介绍,每个小节点里面都有更细化的内容!

如果你觉得这些内容对你有帮助,可以加入csdn进阶交流群,领取资料

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值