前言

showdoc官方提供了一种自动化生成接口和文档的方案。在代码里编写特定格式的程序注释,然后程序就可以通过读取这些注释来自动生成文档。由于这种方式不跟特定的语言耦合,因此它的使用范围相当广泛,可以支持c++、java、php、node等等常见的主流语言。
采用这种方式,尽管我们在第一次填写注释的时候可能会有些繁琐,但是它后期带来的可维护性是非常高的。代码变动后,不需要再额外登录showdoc,直接在代码里修改注释即可。同时自动化的脚本也可以加入持续集成或者某些自动化工程里,让“写接口和文档”这件事如”单元测试”般纳入工程工作流里面。
官网文档

Docker方式安装

安装前请确保你的环境已经装好了docker服务 。docker的安装教程在网上比较多,可以搜索了解下。这里重点介绍showdoc.

# 原版官方镜像安装命令(中国大陆用户不建议直接使用原版镜像,可以用后面的加速镜像)
docker pull star7th/showdoc # 中国大陆镜像安装命令(安装后记得执行docker tag命令以进行重命名)
docker pull registry.cn-shenzhen.aliyuncs.com/star7th/showdoc
docker tag registry.cn-shenzhen.aliyuncs.com/star7th/showdoc:latest star7th/showdoc:latest ##后续命令无论使用官方镜像还是加速镜像都需要执行#新建存放showdoc数据的目录
mkdir -p /showdoc_data/html
chmod  -R 777 /showdoc_data
# 如果你是想把数据挂载到其他目录,比如说/data1,那么,可以在/data1目录下新建一个showdoc_data/目录,
# 然后在根目录的新建一个软链接/showdoc_data到/data1/showdoc_data
# 这样既能保持跟官方教程推荐的路径一致,又能达到自定义存储的目的.#启动showdoc容器
docker run -d --name showdoc --user=root --privileged=true -p 4999:80 \
-v /showdoc_data/html:/var/www/html/ star7th/showdoc

根据以上命令操作的话,往后showdoc的数据都会存放在 /showdoc_data/html 目录下。
你可以打开 http://localhost:4999 来访问showdoc (localhost可改为你的服务器域名或者IP)。账户密码是showdoc/123456,登录后你便可以看到右上方的管理后台入口。建议登录后修改密码。

脚本生成文档

初次接入脚本文档流程
1、新建一个属于自己的项目

2、新建项目成功后,点击查看项目设置

3、拿到参数 api_key 和 api_token,并替换 showdoc_api.sh 脚本中的参数值

4、进入开发环境文件目录,执行 shell 脚本,生成 showdoc 接口文档,如下图:
Linux/Mac下使用指引
先cd进入你的项目目录,命令行模式下输入:

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

下载完毕,编辑showdoc_api.sh脚本
除了api_key 和 api_token ,还有一个url变量。如果是使用www.showdoc.com.cn ,则不需要修改。如果是使用私有版showdoc,则需要将地址改为http://xx.com/server/index.php?s=/api/open/fromComments ,其中,别忘记了url里含server目录。
填写完毕,保存。然后直接双击运行,脚本会自动递归扫描本目录和子目录的所有文本代码文件,并生成API文档。

vi showdoc_api.sh

示例:

#! /bin/bash
#
# 文档说明: https://www.showdoc.com.cn/page/741656402509783
#
api_key="5b9006b2326fa60cfb5028b15c130544885948135"          #api_key
api_token="a70f5ed1cdef974808caf393baa6fd9e2145029960"   #api_token
url="http://192.168.56.10:4999/server/index.php?s=/api/open/fromComments" #同步到的url。使用www.showdoc.com.cn的不需要修改,使用私有版的请修改
#
#
#
#
#
# 如果第一个参数是目录,则使用参数目录。若无,则使用脚本所在的目录。
if [[ -z "$1" ]] || [[ ! -d "$1" ]] ; then #目录判断,如果$1不是目录或者是空,则使用当前目录curren_dir=$(dirname $(readlink -f $0))
elsecurren_dir=$(cd $1; pwd)
fi
#echo "$curren_dir"
# 递归搜索文件
searchfile() {old_IFS="$IFS"IFS=$'\n'            #IFS修改for chkfile in $1/*dofilesize=`ls -l $chkfile | awk '{ print $5 }'`maxsize=$((1024*1024*1))  # 1M以下的文本文件才会被扫描if [[ -f "$chkfile" ]] &&  [ $filesize -le $maxsize ] && [[ -n $(file $chkfile | grep text) ]] ; then # 只对text文件类型操作echo "正在扫描 $chkfile"result=$(sed -n -e '/\/\*\*/,/\*\//p' $chkfile | grep showdoc) # 正则匹配if [ ! -z "$result" ] ; then txt=$(sed -n -e '/\/\*\*/,/\*\//p' $chkfile)#echo "sed -n -e '/\/\*\*/,/\*\//p' $chkfile"#echo $resultif  [[ $txt =~ "@url" ]] && [[ $txt =~ "@title" ]]; thenecho -e "\033[32m $chkfile 扫描到内容 , 正在生成文档 \033[0m "txt2=${txt//&/_this_and_change_}# 通过接口生成文档
curl -H 'Content-Type: application/x-www-form-urlencoded; charset=UTF-8'  "${url}" --data-binary @- <<CURL_DATA
from=shell&api_key=${api_key}&api_token=${api_token}&content=${txt2}
CURL_DATAfififiif [[ -d $chkfile ]] ; thensearchfile $chkfilefidoneIFS="$old_IFS"
}#执行搜索
searchfile $curren_dir#
sys=$(uname)
if [[ $sys =~ "MS"  ]] || [[ $sys =~ "MINGW"  ]] || [[ $sys =~ "win"  ]] ; then read -s -n1 -p "按任意键继续 ... " # win环境下为照顾用户习惯,停顿一下
fi

5、编写代码生成文档示例

<?php
/**
*    这是自动化生成showdoc api文档的demo
*/
class ClassName extends AnotherClass
{/*** showdoc* @catalog 测试文档/用户相关* @title 用户登录* @description 用户登录的接口* @method get* @request [{"id":"39ee5c05-f6ec-0999-2328-ac26a35e5ebd"},{"id":"39ee5c96-2a66-9b1d-4c6a-086ae5060841"}]* @url https://www.showdoc.cc/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 function showdoc(){////}

6、保存文件后。执行以下命令,脚本会自动递归扫描本目录和子目录的所有文本代码文件,并生成API文档。

chmod +x showdoc_api.sh
./showdoc_api.sh

7、showdoc 语法说明文档

/**
* showdoc
* @catalog 测试文档/用户相关
* @title 用户登录
* @description 用户登录的接口
* @method get
* @request [{"id":"39ee5c05-f6ec-0999-2328-ac26a35e5ebd"},{"id":"39ee5c96-2a66-9b1d-4c6a-086ae5060841"}]
* @url https://www.showdoc.cc/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
*/showdoc // 第一行写死就对了,标识符
@catalog // 生成文档要放到哪个目录。如果只是二级目录,则直接写目录名字。如果是三级目录,而需要写二级目录/三级目录,即用 / 隔开。
@title   // 表示生成的文档标题
@description // 是文档内容中对接口的描述信息
@method  //接口请求方式。一般是get或者post
@request // 请求示例
@url  // 接口URL
@param // 参数表格说明。一行注释对应着表格的一行。用空格或者tab符号来隔开每一列信息。
@return  // 返回内容。请把返回内容压缩在同一行内。如果是json,程序会自动进行格式化展示。 如果是非json内容,则原样展示。
@return_param // 返回参数的表格说明。一行注释对应着表格的一行。用空格或者tab符号来隔开每一列信息。
@remark  // 备注信息
@number   // 可选,文档的序号。建议以奇数排序,如:1,3,5,7...,这样可以往中间任意某个位置插入自己想要的排序,不用修改其他接口的序号,避免排序混乱。

showdoc安装与脚本生成文档相关推荐

  1. showdoc如何创建文件夹_showDoc生成文档

    1. 创建项目 2. 获取api_key和api_token 1. 打开设置 2. 获取api_key和token 3. 生成文档 1. 先cd进入你的项目目录,命令行模式下输入: wget http ...

  2. django集成Sphinx,为项目自动生成文档

    Sphinx是一个工具,可以轻松创建智能和漂亮的文档,他与Python自带的pydoc是同一类产品,但比pydoc更加优秀,还有很多主题可以选择,平时在开发过程中,我们看到的第三方包的文档,基本上都是 ...

  3. staruml画的图怎么加载到word_StarUML配置Word生成文档模板

    许多UML建模工具可以自动生成文档,让需求人员.开发人员专心于需求.设计的建模.当然为了能够生成符合自己要求的模板,需对建模时的目录结构(模型和包)有所规划和要求,否则很难生成相应的文档.这要求提前了 ...

  4. Doxygen——根据代码注释生成文档的工具

    文章目录 1 简介 2 安装 3 使用 3.1 注释代码 3.2 使用doxywizard生成文档 4 用例 4.1 OpenCV 4.2 Apollo 5 参考 1 简介 Doxygen是一个可以根 ...

  5. Objective-C自动生成文档工具:appledoc

    作者 iOS_小松哥 关注 2016.12.13 15:47* 字数 919 阅读 727评论 10喜欢 35 由于最近琐事比较多,所以好久没有写文章了.今天我们聊一聊Objective-C自动生成文 ...

  6. Objective-C 自动生成文档工具:appledoc

    来源:iOS_小松哥 www.jianshu.com/p/fd4d8d6b6177 如有好文章投稿,请点击 → 这里了解详情 由于最近琐事比较多,所以好久没有写文章了.今天我们聊一聊Objective ...

  7. 快速优雅的为React组件生成文档

    在开发React组件时我们通常需要处理2个问题: 实例化这个组件以便调试 为这个组件编写使用文档以便更好的让别人知道怎么使用这个组件 最原始的方法莫过于开发时建一个页面用于调试,开发完后再为其手写文档 ...

  8. linux c/c++ 代码使用 doxygen 自动生成文档

    www.doxygen.org 的使用非常方便,下面分成2步介绍一下 1. 注释风格,需要在c/c++代码中按照下面的风格添加注释,基本上还是很顺手的 C++的注释风格 主要使用下面这种样式:即在注释 ...

  9. docwizard c++程序文档自动生成工具_如何开发一个基于 TypeScript 的工具库并自动生成文档

    为什么用 TypeScript? TypeScript is a typed superset of JavaScript that compiles to plain JavaScript. Any ...

最新文章

  1. 马斯克Neuralink被曝“虐杀实验猴”,140万元美金项目遭谴责
  2. ucos内存管理笔记
  3. [Qt教程] 第11篇 2D绘图(一)绘制简单图形
  4. 工作中男女程序员对比,没注意原来差距这么大!你中招了吗?
  5. 爬取网页的通用代码框架
  6. 递归应用场景和调用机制
  7. 免安装Oracle客户端使用PL/SQL
  8. 数据库访问的性能问题与瓶颈问题【z】
  9. Hibernate5-一对多双向关联-迫切左外连接-HQL
  10. 腾讯离职领导的建议:如果可以,去做大数据,不要做报表
  11. Hive单用户模式搭建
  12. Ununtu下安装搜狗拼音输入法
  13. windows7/windows server 2008 r2升级至sp1
  14. python弧度角度转换程序_python 弧度与角度互转实例
  15. macOS - 安装 swig 、PCRE
  16. 13.大容量存储结构(磁盘管理)
  17. 【考研经验】中国科学技术大学软件学院考研经历及复试回忆
  18. 京东物流启动最大规模“春节也送货”,海拔近4000米拉萨也能送
  19. 【deep_thoughts】30_PyTorch LSTM和LSTMP的原理及其手写复现
  20. 大数据原生集群本地测试环境搭建三

热门文章

  1. SOLIDWORKS Simulation齿轮啮合分析
  2. 基于AndFTP完成PC机与Android设备互传文件
  3. board/freescale/mx6ull_alientek_emmc/Kconfig:15: ‘endif‘ in different file than ‘if‘
  4. 如何使用videojs进行小型视频网站的开发
  5. 解除安卓车机禁止安装软件_2020美篇app下载安装官方免费-美篇相册制作免费软件下载v6.3.3 安卓最新版...
  6. ADI评估板EVAL-AD9174开发记录---上
  7. 我的博客今天3岁92天了,我领取了精英博主徽章_亮仔_新浪博客
  8. win2000,winxp-下载
  9. 点击滑动(slideToggle)
  10. PHP解说日全食红月