大家好,我是小富~
前几天粉丝群有小伙伴问,有啥好用的 API 文档工具推荐,无意间发现了一款工具,这里马不停蹄的来给大家分享一下。
ShowDoc 一个非常适合团队的在线 API 文档工具,也支持用 docker 自建文档服务,不过为了方便演示,我直接用了平台在线服务。官网地址:
https://www.showdoc.com.cn/item/index
可以使用 markdown 语法来写 API 文档、数据字典文档、技术文档、在线 excel 文档。但像我这种资深的懒人程序员,其实更看重的是 showdoc 的自动化生成文档的特性,它可以从代码注释中自动生成 API 文档,或者搭配 RunApi 客户端(类似 postman 的 api 调试工具)一边调试接口、一边自动生成文档。
下边从头演示下,来瞅瞅这玩意好用在哪?

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

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

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

在线表格样式很简洁

导出文档有 word、Markdown 两种格式。

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

在向别人分享在线文档时,如果不想将整个 API 目录都暴漏,可以选择进行单页面分享。 
看到这感觉 showdoc 很普通啊,好像没什么特别的地方,上边的这些文档都是需要我们手动书写的,比较繁琐不推荐这么搞,接下来咱们看看如何自动化生成文档。
showdoc 有三种自动生成 API 文档的方式:
Runapi 工具
Runapi 是一个以接口为核心的开发测试工具(可以看做是 Postman 的精简版)。目前客户端支持 win、mac、linux 平台和在线版 ,包含接口测试、自动流程测试、Mock 数据、项目协作等功能。
单纯的 Runapi 和 Postman 相比优势并不大,而与 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_key、api_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_key 和 api_token 变量值,URL 如果没搭建自己的文档服务不用改。

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

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

如果我们想直接从数据库字典表生成数据字典文档,showdoc 也是支持的,先下载官方提供的脚本
wget https://www.showdoc.cc/script/showdoc_db.sh
修改脚本里的配置,数据库、api_key、api_token 等信息,直接执行后数据库表结构信息同步到 showdoc。
如下配置的变量名和解释 
效果就是如下图这样,生成了数据表字典文档,在一些特定场景下还是很方便的。

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 吹嘘都是苍白的,好不好用,适不适合自己,动手搞一下一目了然
我是小富,下期见~
整理了几百本各类技术电子书,有需要的同学自取。技术群快满了,想进的同学可以加我好友,和大佬们一起吹吹技术。
整理了几百本各类技术电子书,有需要的同学公号 [ 程序员内点事 ] 内回复 [ 666 ] 自取。技术群快满了,想进的同学可以加我好友,和大佬们一起吹吹技术。

个人公众号: 程序员内点事,欢迎交流
原网址: 访问
创建于: 2024-01-03 17:08:48
目录: default
标签: 无
未标明原创文章均为采集,版权归作者所有,转载无需和我联系,请注明原出处,南摩阿彌陀佛,知识,不只知道,要得到
java windows火焰图_mob64ca12ec8020的技术博客_51CTO博客 - 在windows下不可行,不知道作者是怎样搞的 监听SpringBoot 服务启动成功事件并打印信息_监听springboot启动完毕-CSDN博客 SpringBoot中就绪探针和存活探针_management.endpoint.health.probes.enabled-CSDN博客 u2u转换板 - 嘉立创EDA开源硬件平台 Spring Boot 项目的轻量级 HTTP 客户端 retrofit 框架,快来试试它!_Java精选-CSDN博客 手把手教你打造一套最牛的知识笔记管理系统! - 知乎 - 想法有重合-理论可参考 安宇雨 闲鱼 机械键盘 客制化 开贴记录 文本 linux 使用find命令查找包含某字符串的文件_beijihukk的博客-CSDN博客_find 查找字符串 ---- mac 也适用 安宇雨 打字音 记录集合 B站 bilibili 自行搭建 开坑 真正的客制化 安宇雨 黑苹果开坑 查找工具包maven pom 引用地 工具网站 Dantelis 介绍的玩轴入坑攻略 --- 关于轴的一些说法 --- 非官方 ---- 心得而已 --- 长期开坑更新 [本人问题][新开坑位]关于自动化测试的工具与平台应用 机械键盘 开团 网站记录 -- 能做一个收集的程序就好了 不过现在没时间 -- 信息大多是在群里发的 - 你要让垃圾佬 都去一个地方看难度也是很大的 精神支柱 [超级前台]sprinbboot maven superdesk-app 记录 [信息有用] [环境准备] [基本完成] [sebp/elk] 给已创建的Docker容器增加新的端口映射 - qq_30599553的博客 - CSDN博客 [正在研究] Elasticsearch, Logstash, Kibana (ELK) Docker image documentation elasticsearch centos 安装记录 及 启动手记 正式服务器 39 elasticsearch 问题合集 不断更新 6.1.1 | 6.5.1 两个版本 博客程序 - 测试 - bug记录 等等问题 laravel的启动过程解析 - lpfuture - 博客园 OAuth2 Server PHP 用 Laravel 搭建带 OAuth2 验证的 RESTful 服务 | Laravel China 社区 - 高品质的 Laravel 和 PHP 开发者社区 利用Laravel 搭建oauth2 API接口 附 Unauthenticated 解决办法 - 煮茶的博客 - SegmentFault 思否 使用 OAuth2-Server-php 搭建 OAuth2 Server - 午时的海 - 博客园 基于PHP构建OAuth 2.0 服务端 认证平台 - Endv - 博客园 Laravel 的 Artisan 命令行工具 Laravel 的文件系统和云存储功能集成 浅谈Chromium中的设计模式--终--Observer模式 浅谈Chromium中的设计模式--二--pre/post和Delegate模式 浅谈Chromium中的设计模式--一--Chromium中模块分层和进程模型 DeepMind 4 Hacking Yourself README.md update 20211011
Laravel China 简书 知乎 博客园 CSDN博客 开源中国 Go Further Ryan是菜鸟 | LNMP技术栈笔记 云栖社区-阿里云 Netflix技术博客 Techie Delight Linkedin技术博客 Dropbox技术博客 Facebook技术博客 淘宝中间件团队 美团技术博客 360技术博客 古巷博客 - 一个专注于分享的不正常博客 软件测试知识传播 - 测试窝 有赞技术团队 阮一峰 语雀 静觅丨崔庆才的个人博客 软件测试从业者综合能力提升 - isTester IBM Java 开发 使用开放 Java 生态系统开发现代应用程序 pengdai 一个强大的博主 HTML5资源教程 | 分享HTML5开发资源和开发教程 蘑菇博客 - 专注于技术分享的博客平台 个人博客-leapMie 流星007 CSDN博客 - 舍其小伙伴 稀土掘金 Go 技术论坛 | Golang / Go 语言中国知识社区
最新评论