您的当前位置:首页>全部文章>文章详情

showdoc自动化生成接口和文档的方案

发表于:2024-06-17 15:14:21浏览:299次TAG: #showdoc #API管理

介绍

showdoc开放文档编辑的API,供使用者更加方便地操作文档数据。利用开放API,你可以自动化地完成很多事。例如下面列举三个典型的应用场景:

  • 假如你的团队有很多现成的文档资料,但这些文档资料大多以word的形式存在。如果人工复制粘粘,工作量会有点多。此时你可以写一个自动脚本,从文件中生成文档,然后通过showdoc的开放api批量地把文档更新进去。

  • 你是个后端程序员,你想在写完代码后,文档能自动更新到showdoc。为了实现这个效果,你可以写一个脚本程序,根据你项目代码的结构,自动生成文档数据,然后通过showdoc的开放api自动更新。

  • 你有很多笔记教程,存在笔记软件或者网站博客中,但你想把它们归类在一起供人们查阅。 这时你可以写程序批量导入showdoc

windows下使用指引

在需要生成的地方放入以下文件,创建文件build_doc.sh,并填入以下内容

#! /bin/bash
#
# 文档说明: https://www.showdoc.com.cn/page/741656402509783 
# 
api_key="9b9a7xxxxxxxxxx336"             #api_key
api_token="c1fbxxxxxxxxxx2403"     #api_token
url="http://域名.com/server/?s=/api/open/fromComments" #同步到的url。使用www.showdoc.com.cn的不需要修改,使用私有版的请修改
#
#
#
#
#
# 如果第一个参数是目录,则使用参数目录。若无,则使用脚本所在的目录。
if [[ -z "$1" ]] || [[ ! -d "$1" ]] ; then #目录判断,如果$1不是目录或者是空,则使用当前目录
    curren_dir=$(pwd)
else
    curren_dir=$(cd $1; pwd)
fi
#echo "$curren_dir" 
# 递归搜索文件
searchfile() {

    old_IFS="$IFS"
    IFS=$'\n'            #IFS修改
    for chkfile in $1/*
    do
        filesize=`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 $result
                    if  [[ $txt =~ "@url" ]] && [[ $txt =~ "@title" ]]; then
                        echo -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_DATA
                    fi
            fi
        fi

        if [[ -d $chkfile ]] ; then
            searchfile $chkfile
        fi
    done
    IFS="$old_IFS"
}


#执行搜索
searchfile $curren_dir


#
sys=$(uname)
if [[ $sys =~ "MS"  ]] || [[ $sys =~ "MINGW"  ]] || [[ $sys =~ "win"  ]] ; then 
    read -s -n1 -p "按任意键继续 ... " # win环境下为照顾用户习惯,停顿一下
fi

接口添加特定备注

/**
* showdoc
* @cover 0
* @catalog 测试文档/用户相关
* @title 用户登录
* @description 用户登录的接口
* @method get
* @url https://www.showdoc.cc/home/user/login
* @header token 可选 string 设备token 
* @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
*/
关键字 说明
@cover 是否重新生成:0=不重新生成;1=重新生成
@catalog 生成文档要放到哪个目录。如果只是二级目录,则直接写目录名字。如果是三级目录,而需要写二级目录/三级目录,即用/隔开。如”一层/二层/三层”
@title 表示生成的文档标题
@description 是文档内容中对接口的描述信息
@method 接口请求方式。一般是get或者post
@url 接口URL。不要在URL中使用&符号来传递参数。传递参数请写在参数表格中
@header 可选。header说明。一行注释对应着表格的一行。用空格或者tab符号来隔开每一列信息。
@param 参数表格说明。一行注释对应着表格的一行。用空格或者tab符号来隔开每一列信息。
@json_param 可选。当请求参数是json的时候,可增加此标签。请把json内容压缩在同一行内。当采用这种json方式的时候,上面的@param表格的参数说明将自动变成是对此json的字段描述说明
@return 返回内容。请把返回内容压缩在同一行内。如果是json,程序会自动进行格式化展示。 如果是非json内容,则原样展示。
@return_param 返回参数的表格说明。一行注释对应着表格的一行。用空格或者tab符号来隔开每一列信息。
@remark 备注信息
@number 可选。文档的序号。