第七星尘的独立博客

如何利用showdoc自动生成API文档

介绍

showdoc是一个适合IT团队的文档工具,阅读本文前需要对showdoc有基本了解 。基本介绍可看:https://www.showdoc.cc/help
对于写API文档这件事,虽然说文本编辑软件或者接口管理软件能在某种程度上提高我们的效率,但我们依然可以试图借助技术的力量,更自动化地生成API文档,释放自己的生产力。
为此,showdoc官方提供了一种自动化解决方案。在代码里编写特定格式的程序注释,然后showdoc通过读取这些注释来自动生成文档。由于这种方式不跟特定的语言耦合,因此它的使用范围相当广泛,可用支持c++、java、php、node、python等等常见的主流语言。
采用这种方式,尽管我们在第一次填写注释的时候可能会有些繁琐,但是它后期带来的可维护性是非常高的。代码变动后,不需要再额外登录showdoc,直接在代码里修改注释即可。同时自动化的脚本也可以加入持续集成或者某些自动化工程里,让“写API文档”这件事如"单元测试"般纳入工程工作流里面。

windows下使用指引

windows无法直接运行sh脚本,需要额外下载软件。
推荐下载git for windows:https://git-scm.com/download/win 下载后直接双击安装即可。
如果从官网下载比较慢,可用考虑下载由第三方开发者维护的国内版(showdoc官方不保证其长期稳定):
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 ,这个需要用户自行填写。关于这两个变量的取值,请登录showdoc,进入某个项目的设置,点击开放API,便可以看到说明。showdoc_api.sh生成的文档会放进你填写的这个项目里。除了api_key 和 api_token ,还有一个url变量。如果是使用www.showdoc.cc ,则不需要修改。如果是使用开源版showdoc,则需要将地址改为http://xx.com/server/?s=/api/open/fromComments 其中,别忘记了url里含server目录。
填写完毕,保存。然后直接双击运行,脚本会自动递归扫描本目录和子目录的所有文本代码文件,并生成API文档。
为了方便测试,官方还提供了一个例子。请下载:
https://www.showdoc.cc/script/api_demo.test
下载后,把api_demo.test文件放在showdoc_api.sh所在的目录或者子目录下。运行的时候它便会生成文档到你指定的项目地址中。
如果你想参考官方demo是怎么写的,可用鼠标右击api_demo.test,选择编辑。仿照此种写法,在你的项目中插入类似的注释,也能达到自动生成文档的效果。详细语法会在文章后面部分说明。
如果你想应用到其他项目,可以把showdoc_api.sh复制一份到其他项目中。使用方法和前面一样。

Linux/Mac下使用指引

先cd进入你的项目目录,命令行模式下输入:
wget https://www.showdoc.cc/script/showdoc_api.sh
下载完毕,编辑
vi showdoc_api.sh
脚本内容的前面有两个变量,api_key 和 api_token ,这个需要用户自行填写。关于这两个变量的取值,请登录showdoc,进入某个项目的设置,点击开放API,便可以看到说明。showdoc_api.sh生成的文档会放进你填写的这个项目里。除了api_key 和 api_token ,还有一个url变量。如果是使用 www.showdoc.cc ,则不需要修改。如果是使用开源版showdoc,则需要将地址改为http://xx.com/server/?s=/api/open/fromComments ,其中,别忘记了url里含server目录。
保存文件后。执行以下命令,脚本会自动递归扫描本目录和子目录的所有文本代码文件,并生成API文档。

 chmod +x showdoc_api.sh
./showdoc_api.sh

为了方便测试,官方还提供了一个例子。请下载:
wget https://www.showdoc.cc/script/api_demo.test
下载后,把api_demo.test文件放在showdoc_api.sh所在的目录或者子目录下。运行的时候它便会生成文档到你指定的项目地址中。
如果你想参考官方demo是怎么写的,可用vi命令打开api_demo.test。仿照此种写法,在你的项目中插入类似的注释,也能达到自动生成文档的效果。详细语法会在文章后面部分说明。
如果你还想应用到其他项目,可以把showdoc_api.sh复制一份到其他项目中。使用方法和前面一样。
或者不转移位置,直接通过参数指定扫描目录。如
./showdoc_api.sh /myapp/demo/

语法说明

一个标准语法例子:

    /**
    * showdoc
    * @catalog 测试文档/用户相关
    * @title 用户登录
    * @description 用户登录的接口
    * @method get
    * @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
    */

语法说明


@catalog // 生成文档要放到哪个目录。如果只是二级目录,则直接写目录名字。如果是三级目录,而需要写二级目录/三级目录,即用 / 隔开。 @title //表示生成的文档标题 @description // 是文档内容中对接口的描述信息 @method //接口请求方式。一般是get或者post @url //接口URL @param //参数表格说明。一行注释对应着表格的一行。用空格或者tab符号来隔开每一列信息。 @return //返回内容。请把返回内容压缩在同一行内。如果是json,程序会自动进行格式化展示。 如果是非json内容,则原样展示。 @return_param //返回参数的表格说明。一行注释对应着表格的一行。用空格或者tab符号来隔开每一列信息。 @remark //备注信息 @number //可选。文档的序号。

其他信息

请严格按照我们的语法来填写程序注释。如果格式不对,则可能引发未知的解析错误。
出于数据安全考虑,showdoc不允许直接通过代码删除文档。只能新增或者修改。所以,如果你要删除文档,请登录showdoc网页端完成。
本脚本只能通过特定的程序注释来生成文档,使用范围有限。如果你是想通过其他方式自由地生成文档,如通过word、通过博客软件等,请参考我们更自由的开放API:https://www.showdoc.cc/page/102098
如果你的项目下太多文件,则可能导致脚本扫描很慢。推荐把脚本放到需要生成注释的那个目录里。一般来讲,一个项目不会所有目录都需要生成文档的

 如无特殊说明,本站皆为原创。转载请注明来自第七星尘的独立博客《如何利用showdoc自动生成API文档》

评论

  1. zhoulg #1

    项目删除了后,还能恢复回来吗?

    回复
    2019-08-3
  2. 小雨 #2

    有没有node项目的自动生成文档例子,下载官网的php可以生成,node项目生成不了,不知道怎么配置

    回复
    2019-05-10
    • 第七星尘

      跟语言没有关系。自己注意脚本放置的目录不要包含node_modules,否则会消耗大量时间去遍历无关文件。你可以把脚本放进去更深层的源文件那边去。

      回复
      2019-05-10
      • 小雨

        我把官网的脚本丢到路由的同级,注释也按照对应的格式写了;没法自动生成api呀

        回复
        2019-05-13
        • 第七星尘

          我建议你用官方demo尝试。你自己本身的代码格式,官方无法控制

          回复
          2019-05-13
          • 小雨

            官网demo可以实现出来,不知道怎么用在自己的node项目

            回复
            2019-05-13
  3. cc #3

    提问/意见
    自动文档生成时,如果请求参数请求格式为多个JSON格式数据,这时需要生成文档请求参数显示分多个表格该如何处理?

    回复
    2019-02-28
    • 第七星尘

      官方的脚本只能生成官方的那种格式。如果你需要更自定义格式,则要自己编程请求更自由的高级API https://www.showdoc.cc/page/102098

      回复
      2019-02-28