Spring项目集成apidoc生成api接口文档

一、背景需求

 JavaWeb/spring项目写成的api接口,需要自动生成api文档,甚至需要在线测试接口。考虑实现的方案有swagger,apidoc,spring rest docs。在之后的项目都有一一尝试,最终还是觉得apidoc的方式比较合适,虽然有一些问题(针对在线测试方面),但可以进行定制修复并解决。

二、方案对比

1.现在大家普遍使用的是swagger结合springmvc来生成api接口文档,对比apidoc,swagger有一个明显的劣势,便是返回的响应,无法生成文档描述,即无法描述响应体的数据结构,这对前后端对接,或者是与移动端/其他端对接来说,需要耗费更多的交流成本,沟通成本,即不可能每个接口都通过实际调用后,看返回实体获悉响应参数。针对后端改动响应体这种情况,又会导致新的问题存在。

2.spring rest docs,这是spring体系里提供的一种接口生成框架,基于mockmvc编写单元测试,单元测试通过即可生成可供阅读的接口文档。这种生成方式需要编写详细的测试单元,并且稍微一点出错便导致编译不通过,对于程序的严谨有一定帮助,但又牺牲一些时间,并且最终生成的文档是基于测试用例数据,没有类似swagger和apidoc的在线测试功能。

3.apidoc,通过注释,生成接口文档,不像swagger和spring rest docs嵌入在代码中,仅仅是通过注释而已。缺点是在线测试功能有些问题,不支持文件表单,但这些缺陷都是可以弥补的,可通过再编程,重新定制源码实现,基于handlebars.js。

三、环境准备

1.安装node.js,

官网:https://nodejs.org/en/点击打开链接;windows64位下载地址https://nodejs.org/dist/v8.9.4/node-v8.9.4-x64.msi下载

Linux 上安装 Node.js

参考地址:https://www.runoob.com/nodejs/nodejs-install-setup.html

直接使用已编译好的包

1.1 Node 官网已经把 linux 下载版本更改为已编译好的版本了,我们可以直接下载解压后使用:

# wget https://nodejs.org/dist/v10.9.0/node-v10.9.0-linux-x64.tar.xz    // 下载
# tar xf  node-v10.9.0-linux-x64.tar.xz       // 解压
# cd node-v10.9.0-linux-x64/                  // 进入解压目录
# ./bin/node -v                               // 执行node命令 查看版本
   v10.9.0

1.2 解压文件的 bin 目录底下包含了 node、npm 等命令,我们可以使用 ln 命令来设置软连接:

ln -s /software/node-v10.9.0-linux-x64/bin/npm   /usr/local/bin/ 
ln -s /software/node-v10.9.0-linux-x64/bin/node   /usr/local/bin/

1.3环境配置
vim /etc/profile
export PATH
=/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin
source
/etc/profile

1.4 再输入npm -v 或者node -v 就能看到版本号啦~

 

2.安装apidoc,

命令行下,输入npm install apidoc -g,参考官网:http://apidocjs.com/#install 点击打开链接

npm install apidoc -g

  2.1 ln 命令来设置apidoc软连接:

ln -s /software/node-v10.9.0-linux-x64/bin/apidoc  /usr/local/bin/

2.2 安装完毕,可在命令下使用apidoc -h测试是否安装成功

apidoc -v

 

四、整合项目使用

1.项目根路径下建立apidoc.json文件,配置好基本的文档信息。

{
  "name": "API文档",
  "version": "1.0.0",
  "description": "开发技术接口文档",
  "title": "API文档",
  "url" : "http://localhost:8080/test",
  "sampleUrl":"http://localhost:8080/test"
}

 2.demo 目录下添加demo.js编写接口文档内容,内容也可写在java接口前面部分
/**
 * @apiDefine A9999DemoInterface 风险预警应急中心
 */


/**
 * @api {GET} /app/api/getNewestDate 1-1 获取最新有数据的日期
 * @apiName getNewestDate
 * @apiGroup A9999DemoInterface
 * @apiDescription 获取最新有图片的日期
 * @apiParam {String} token 比如xxxxxx_grand
 * @apiVersion 0.0.1
 * @apiSuccessExample {JSON} Success-Response:
{
    "code": 0,
    "msg": "success",
    "data": String // 日期
}
*/

/**
 * @api {GET} /app/api/getRadarPicCount 1-2 获取指定日期的三个月内的每日数据次数
 * @apiName getRadarPicCount
 * @apiGroup A9999DemoInterface
 * @apiDescription  获取指定日期的三个月内的每日数据次数
 * @apiParam {String} addtime 当前日期三个月内的数据次数
 * @apiParam {String} token 比如xxxxxx_grand
 * @apiVersion 0.0.1
 * @apiParamExample  {json} Request-Example:
 *     {
          "addtime":"2020-01-18"
       }
 * @apiSuccess (200) {Object} data 返回数据格式见下面json对象及备注
 * @apiSuccessExample {JSON} Success-Response:
{
    "code": 0,
    "msg": "success",
    "data": [
        {
            "addtime":"2020-01-18", //雷达预警时间
            "radarCount": "500112"  //次数
        }, ....
    ]
}
*/

或者如下这种,两种都支持

 3,把项目拷贝到apidoc所在系统的linux目录中

 5,生成apidoc文档,apidoc -i ./ -o ./src/main/webapp/WEB-INF/doc

apidoc -i /software/manualPictrue/ -o /software/apache-tomcat-8.0.53-9100/webapps/apidoc/ 

重要参数:

参数描述
-f,--file-filters RegEx-Filter选择要解析的文件(可以使用许多-f)。默认.cs .dart .erl .go .java .js .php .py .rb .ts

示例(仅解析.js和.ts文件):
apidoc -f ".*\.js$" -f ".*\.ts$"
-i,-输入 输入/源目录名。项目文件的位置。就是需要生成文档的注释文件所在目录,会从内部寻找。

例:
apidoc -i myapp/
-o,-输出

输出目录名。放置生成的文档的位置。

例:目录我让他生成在我此台主机的tomcat下面,他生成目录后我就可以直接通过tomcat访问接口文档
apidoc -o /software/apache-tomcat-8.0.53-9100/webapps/apidoc/ 

-t,-模板 使用模板输出文件。您可以创建和使用自己的模板。

例:
apidoc -t mytemplate/
 6.访问接口文档。
 
原文地址:https://www.cnblogs.com/KdeS/p/13042180.html