ApiDoc接口文档工具
ApiDoc
参考
前言
ApiDoc 用来比较规范的管理 API 文档。
ApiDoc 这个 API 文档管理器,可以根据你代码的注释来进行自动生成 API 文档。
同时支持 C#、Java、JavaScript、PHP、Python等语言。
目录
目录结构
1 | project 项目目录 |
示例的所有目录文件都需要自己去创建
结构仅供参考, ApiDoc 并不强制要求。
常用命令
apidoc -xxx
- -i:指定源代码目录
- -o:指定输出目录
-t:指定模板输出文件
-f:解析的文件
apidoc -f ".*\\.js$"
:只解析 .js 文件
配置
ApiDoc 配置是基于项目根目录的 apidoc.json
中设置的
apidoc.json
1 | { |
配置项说明
名称 | 描述 |
---|---|
name | 项目名称 |
version | 项目版本 |
description | 项目描述 |
title | 浏览器上的 title 名称 |
url | 接口地址 |
sampleUrl | 接口测试地址 |
header.title | 左侧导航标签头部内容的标题 |
header.filename | 相对于源代码目录的头部文件路径,文件内容使用markdow语法 |
footer.title | 左侧导航标签底部内容的标题 |
footer.filename | 相对于源代码目录的底部文件路径,文件内容使用markdow语法 |
order | 用于对文档里面的接口分组,接口等进行排序 |
基本使用
安装
1 | npm install apidoc -g |
创建目录
1 | mkdir src && mkdir output |
创建配置文件 apidoc.json
1 | touch apidoc.json |
apidoc.json
:
1 | { |
定义错误响应
创建文件 common.php
:
1 | touch common.php |
common.php
:
1 |
|
如何使用自定义的错误响应:
1 | /** |
当有多个@apiErrorExample时候,页面会以tab标签形式展示,方便我们返回多种异常样例
定义接口分组和权限
创建文件 define.php
1 | touch define.php |
define.php
1 |
|
如何使用定义的权限组:
1 | /** |
定义页首
创建文件 header.md
1 | touch header.md |
header.md
1 | 产品需求说明:<a href="http://www.baidu.com" target="_blank">戳这里直达</a> |
接口文档编写
创建版本目录,默认为:v1
1 | $ mkdir v1 && touch user.php |
user.php
1 | /** |
执行命令:
1 | apidoc -i src/ -o output |
执行成功时显示:
1 | {"message":"Done.","level":"info"} |
常用参数
@api
必须值,如果没有该参数,解析器将忽略该文档块。
1 | @api {method} path [title] |
参数说明:
名称 | 说明 | 是否必须 |
---|---|---|
method | 请求方法,例:GET 、POST 、DELETE 等等。 | 是 |
path | 请求路径 | 是 |
title | 简短的标题,用于左侧导航和接口标题 | 否 |
示例:
1 | /** |
@apiDefine
定义要嵌入 @api
的文档块或 api function
里的文档块。
@apiDefine
定义的在每个块里只能使用一次。
1 | @apiDefine name [title] |
参数说明:
名称 | 说明 | 是否必须 |
---|---|---|
name | 块的唯一名称,如果使用相同名称可以使用不同版本 @apiVersion 去定义 | 是 |
title | 一个简短的标题,仅用于命名函数,如:@apiPermission 或 @apiParam(name) | 否 |
description | 详细说明从下一行开始,可以使用多行。仅用于命名函数 @apiPermission | 否 |
示例:
1 | /** |
@apiDeprecated
将 API 方法标记为已弃用
1 | @apiDeprecated [text] |
参数说明:
名称 | 描述 | 是否必须 |
---|---|---|
text | 多行文字 | 是 |
@apiDescription
API 方法的详细描述
参数说明:
名称 | 描述 | 是否必须 |
---|---|---|
text | 多行文字 | 是 |
@apiError
错误返回参数
1 | @apiError [(group)] [{type}] field [description] |
参数说明:
名称 | 描述 | 是否必须 |
---|---|---|
( group ) | 所有参数都将按此名称分组, | 否 |
{ type } | 返回类型,如:{Boolean} 、{Number} 、{String} 、{Object} | 否 |
field | 错误类型 | 是 |
description | 错误描述 | 否 |
@apiErrorExample
错误返回信息示例,以定义的代码格式输出,如 json
1 | @apiErrorExample [{type}] [title] |
参数说明:
名称 | 描述 | 是否必须 |
---|---|---|
{type} | 返回格式,如 {json} | 可选 |
title | 描述标题 | 可选 |
example |
示例:
1 | /** |
@apiExample
API 方法的使用示例
1 | @apiExample [{type}] title |
参数说明:
名称 | 描述 | 是否必须 |
---|---|---|
{type} | 代码语言 | 否 |
title | 标题 | 是 |
example | 示例 | 是 |
示例:
1 | /** |
@apiGroup
推荐经常使用。
定义方法,文档块属于哪个分组。分组名称将用于主导航。
1 | @apiGroup name |
参数说明:
名称 | 描述 | 是否必须 |
---|---|---|
name | 分组名称,也用于导航标题 | 是 |
示例:
1 | /** |
@apiHeader
描述需要传给 API 的头部的参数,常用于授权。
1 | @apiHeader [(group)] [{type}] [field=defaultValue] [description] |
参数说明:
名称 | 描述 | 是否必须 |
---|---|---|
( group ) | 所属分组 | 否 |
{ type } | 参数类型,可选:Boolen 、Number 、String | 否 |
field=defaultValue | 字段名,可设置默认值,默认值非必须 | 是 |
description | 描述 | 否 |
示例:
1 | /** |
@apiHeaderExample
参数请求示例。
1 | @apiHeaderExample [{type}] [title] |
参数说明:
名称 | 描述 | 是否必须 |
---|---|---|
{ type } | 请求格式 | 否 |
title | 标题 | 否 |
example | 示例 | 是 |
示例:
1 | /** |
@apilgnore
必须放在块的顶部。
@apilgnore
将使 ApiDoc 无法解析块。常用于过时的方法或未完成的方法里。
参数说明:
名称 | 描述 | 是否必须 |
---|---|---|
hint | 描述为什么忽略这个块 | 否 |
示例:
1 | /** |
@apiName
推荐经常使用。
定义接口名称,名称将用于导航中的子标题。
1 | @apiName name |
参数说明:
名称 | 描述 | 是否必须 |
---|---|---|
名称 | 方法的唯一名称,相同名称的方法应该使用不同的版本区分开来 | 是 |
示例:
1 | /** |
@apiParam
描述传递给 API 方法的参数。
1 | @apiParam [(group)] [{type}] [field=defaultValue] [description] |
字段名中间加上
[ ]
表示该参数可选,非必填
示例:
1 | /** |
@apiParamExample
参数请求格式示例。
1 | @apiParamExample [{type}] [title] |
参数说明:
名称 | 描述 | 是否必须 |
---|---|---|
{ type } | 请求格式 | 否 |
title | 该示例的简称 | 否 |
example | 详细的示例 | 是 |
例:
1 | /** |
@apiPermission
该接口所需的权限名称。
1 | @apiPermission name |
参数说明:
名称 | 描述 | 是否必须 |
---|---|---|
name | 权限的 唯一 名称 | 是 |
@apiPrivate
将 Api 定义为私有,以允许创建两个 API 规范文档,一个排除私有接口,一个包含私有接口。
用于排除 / 包含 私有 Api 的命令行: --private false|true
示例:
1 | /** |
@apiSuccess
成功请求返回参数。
1 | @apiSuccess [(group)] [{type}] field [description] |
参数说明:
名称 | 描述 | 是否必须 |
---|---|---|
( group ) | 组 | 否 |
{ type } | 返回类型 | 否 |
field | 字段 | 是 |
description | 描述 | 否 |
示例:
1 | /** |
@apiSuccessExample
成功返回示例。
1 | @apiSuccessExample [{type}] [title] |
参数说明:
名称 | 描述 | 是否必须 |
---|---|---|
{ type } | 类型 | 否 |
title | 标题 | 否 |
example | 示例 | 是 |
@apiUse
引入一个已定义的块。
1 | @apiUse name |
参数说明:
名称 | 描述 | 是否必须 |
---|---|---|
name | 块名称 | 是 |
示例:
1 | /** |
@apiVersion
设置文档块的版本,也可用于 @apiDefine
。
1 | @apiVersion version |
参数说明:
名称 | 描述 | 是否必须 |
---|---|---|
version | 版本号 | 是 |
示例:
1 | /** |