利用apidoc设计文档自动生成方案
使用apidoc
可以通过分析代码中的注释生成文档,由于apidoc
生成的文档是一个单文件
多人开发过程中会导致文件的覆盖,可以通过git
代码分支合并的时候通过钩子(web hook)生成文档到文档服务器
文档服务器通过samba
服务 实现代码服务器将生成的文档写入文档服务器。由于是静态文件可以使用node
来跑
这样避免多项目的时候 需要在文档服务器绑定不同的域名来实现单台文档服务器跑多个项目的接口文档的麻烦
1. 环境安装
1.1 node + apidoc
apidoc 是node的一个工具 需要先安装node才能使用
1.1.1 安装node
下载win64安装文件下载地址 (这里忽略加入PATH的操作 如果需要自行添加)
命令行输入 node -v
显示版本号 表示你以成功安装 node
1.1.2 安装apidoc
通过 node 的包管理工具 npm
安装 npm install apidoc -g
执行命令apidoc --help
命令识别标识安装成功
apidoc命令没有提供查询版本的参数(个人没有发现)
1.2 samba 服务
为了生成文件方便 使用samba
服务 具体安装方法 samba 文件共享
1.3 文档自动生成
为了避免 各自生成文档 导致文件覆盖的情况,文档生成的操作不开放给开发者
当然开发者可以生成到本地来检查代码文档注释是否ok
我们在使用git
做版本控制的时候 开发分支是隔离的,一般会有master
release
dev
三个主分支
开发者开发完毕会将代码合并到dev
分支跟客户端对接联调,可以在分支合并处 通过钩子生成文档到文档服务器(一般也会在合并分支的时候通过 jenkins 自动构建代码)
2. apidoc 使用简介
apidoc 官网地址 apidoc 官网
注释要使用标准的块注释 基本用法举例
1 | /** |
文档生成命令
1 | apidoc -i [代码路径] -o [生成的接口文档静态文件] |
3. apidoc 语法说明
3.1 基本定义
3.1.1 @api
@api {method} path name
定义基本的接口请求方式 这个参数必须存在
参数 | 说明 | 备注 |
---|---|---|
method | Http请求方法 GET POST PUT 等,不区分大小写 |
如果支持多种请求方式可以写成{GET POST} 但这会导致 apiSampleRequest 无法使用 |
path | 路由 | |
name | 接口名称 会显示到文档左侧的导航栏 |
使用举例
1 | # 单个请求方式 |
3.1.2 @apiGroup
@apiGroup name
定义接口的分组 分组定义会显示到文档左侧的主导航栏。但是这个分组的值不支持中文
可以通过@apiDefine
的形式来使用中文
参数 | 说明 | 备注 |
---|---|---|
name | 分组名称 |
使用举例
1 | /** |
通过apiDefine 使用中文
1 | /** |
3.1.3 @apiName
@apiName name
定义接口内部名称。
默认情况下apidoc会将 请求方式以及路由进行拼接成值 一般不建议设置这个值
一个接口在不同版本中请求方式
和路由
都不会发生变化的时候尽量用默认值
如果同一个接口中请求方式
和路由
在不同版本发生变化 这个定义就会起到作用
参数 | 说明 | 备注 |
---|---|---|
name | 接口名称 默认是 method+path |
使用举例
1 | /** |
3.1.4 apiVersion
@apiVersion version
定义接口版本
参数 | 说明 | 备注 |
---|---|---|
version | 支持版本格式 major.minor.patch |
使用举例
1 | /** |
3.1.5 apiDescription
@apiDescription description
参数 | 说明 | 备注 |
---|---|---|
description | 接口描述 |
使用举例
1 | /** |
3.2 参数说明
参数说明定义基本分为两个纬度 参数类型
参数形式
下面通过一个表格说明
# | 参数字段说明 | 参数举例 |
---|---|---|
基本参数 | @apiParam | @apiParamExample |
请求头 | @apiHeader | @apiHeaderExample |
成功 | @apiSuccess | @apiSuccessExample |
错误 | @apiError | @apiErrorExample |
3.2.1 apiParam
@apiParam [(group)] [{type{size}}] field descript
定义参数字段 其中 @apiHeader
@apiSuccess
@apiError
用法也是如此
参数 | 说明 | 备注 |
---|---|---|
type | 参数类型 支持的参数类型有String Number Boolean Object String[] |
定义参数取值范围 {Number{1-999}} |
field | 参数字段名称 | 设置默认值 field=defaultValue , 设置为可选项 [field] |
descript | 参数字段描述 |
使用举例
1 | /** |
参数类型取值范围定义
1 | # 定义2-5个字符 |
参数字段
1 | # 设置参数默认值 |
3.2.2 apiParamExample
@apiParamExample [type] title
content
定义参数例子 其中 @apiHeaderExample
@apiSuccessExample
@apiErrorExample
用法也是如此
参数 | 说明 | 备注 |
---|---|---|
type | 内容类型 json |
|
title | 参数名称 | |
content | 参数例子 |
使用举例
1 | /** |
3.3 定义代码块
定义代码块 必须 在独立的注释块中定义
1 | # 定义一个常量 |
1 | # 定义代码片段 |
3.4 其他
3.4.1 权限
3.4.2 忽略注释
代码注释块中有@apiIgnore
声明的话 这个代码块里面的文档注释将不会生成到文档
建议这个声明写到注释块的头部
3.4.3 接口作者
apidoc
的缺点是没有定义接口作者的地方,一个方法就是利用@apiExample
来定义
1 | /** |
4. 文档服务器
建议单独一个服务器跑 文档 ,文档可以通过ip+端口