API文档自动生成工具apiDoc
一:介绍
apidoc 是一个基于 nodejs 的 API 文档生成工具,从代码注释中提取特定格式的内容,生成 API 文档。程序员都不喜欢写文档,但是程序员习惯写注释。可谓一举两得。
apidoc目前支持php,python,java,go,rust,perl,c#等等几乎主流语言都支持。
二:安装
1:首先安装nodejs
下载地址:https://nodejs.org/en/download/
安装完成后,查看一下:

2:全局安装 apidoc
npm install apidoc -g

3:查看是否安装成功
apidoc -v

三:小试身手
1:新建一个项目目录abc:E:\www\abc,在该目录下新建3个文件
(1):apidoc.json
{
"name": "测试API",
"version": "1.0.0",
"description": "测试API",
"title": "测试API",
"url" : "https://127.0.0.1:90/v1",
"header": {
"title": "测试APId",
"filename": "header.md"
},
"footer": {
"title": "测试API",
"filename": "footer.md"
}
} (2):header.mdheader(3):footer.md
footer

2:在abc目录下新建一个src目录,该目录保存程序

3:src下新建两个文件,执行的时候apidoc从这两个文件提取
(1):articles.php
<?php
/**
* @api {get} /articles/:id 根据单个id获取文章信息
* @apiName 根据id获取文章信息
* @apiGroup Articles
*
* @apiParam (params) {String} id 文章id
*
* @apiSuccess {Array} article 返回相应id的文章信息
*
* @apiSuccessExample Success-Response:
* HTTP/1.1 200 OK
* {
* "tile": "文章标题2",
* "date": 1483941498230,
* "author": "classlfz",
* "content": "文章的详细内容"
* }
*
* @apiError (Error 4xx) 404 对应id的文章信息不存在
*
* @apiErrorExample Error-Response:
* HTTP/1.1 404 对应id的文章信息不存在
* {
* "error": err
* }
*/(2):user.php
<?php
/**
* @api {post} /user/ 查询用户
* @apiName 根据查询条件返回用户信息
* @apiGroup User
* @apiParam {String} [firstname] Optional Firstname of the User.
* @apiParam {String} lastname Mandatory Lastname.
* @apiParam {String} country="DE" Mandatory with default value "DE".
* @apiParam {Number} [age=18] Optional Age with default 18.
*
* @apiParam (Login) {String} pass Only logged in users can post this.
* In generated documentation a separate
* "Login" Block will be generated.
*/

4:运行,首先进入abc目录
apidoc -i src/ -o apidoc/以上表示提取src/里面的数据,生成到apidoc目录下

这样表示成功,打开看下

直接浏览器打开apiddoc中的index.html。

然后把nginx或者apache绑定到这个目录即可!
参数说明:
-f 文件类型
-i 文件输入路径(必选)
- o 输出路径(必选)
- t 使用模板(非必选,一般不用)
apidoc -f .php -i src/ -o apidoc/
这句话意思是:把src目录下的.php文件 api输出到apidoc目录下(运行该命令,需要在apidoc.json同级目录下)
三:基本规则:
以下转自:https://www.jianshu.com/p/a799c23234b8
@api
@api一般是必须编写的(除非你是用了@apiDefine),不然apidoc编译器会忽略这段注释。
/**
* @api {method} path [title]
*/
| Name | Description |
|---|---|
| method | 请求的方法名称:如GET、POST等等 |
| path | 请求路径 |
| title(可选) | 一个简短的标题(用于导航跟文档标题) |
@apiGroup
定于api归属的组名,生成的文档会把该api注释归类到该值对应的api组上。
/**
* @apiGroup name
*/
| Name | Description |
|---|---|
| name | 组名称 |
@apiName
@apiName用于定义API文档的一个实例,并用作实例名称 。
/**
* @apiName name
*/
| Name | Description |
|---|---|
| name | 实例名称 |
@apiParam
@apiParam用于编写API的参数以及参数的解释。
/**
* @apiParam [(group)] [{type}] [field=defaultValue] [description]
*/
| Name | Description |
|---|---|
(group) 可选 | 参数归属组名,不填写组名,则默认设为Paramter |
{type} 可选 | 参数数据类型,如{String}、{Number}、{Array}等等 |
{type{size}} 可选 | 变量的大小信息 {String{..5}}参数类型为一个字符不超过5的字符串;{String{2..5}}参数为一个字符在2到5之间的字符串; |
{type=allowedValues} 可选 | 参数允许值 {string="small","huge"}参数只能接受small或者huge的字符串 |
field 可选 | 参数名称 |
| =defaultValue | 参数默认值 |
| description(可选) | 描述 |
@apiParamExample
@apiParamExample参数例子
/**
* @apiParamExample [{type}] [title]
* example
*/
| Name | Description |
|---|---|
{type} 可选 | 请求数据结构 |
title 可选 | 例子的一个简短的标题 |
| example | 例子的详细信息,可多个例子并存 |
@apiSuccess
请求成功后的返回字段参数
/**
* @apiSuccess [(group)] [{type}] field [description]
*/
| Name | Description |
|---|---|
(group) 可选 | 参数归属组名,不填写组名,则默认设为Success 200 |
{type} 可选 | 返回的数据类型,如{String}、{Number}等等 |
| field | 返回的标示符(返回成功的状态码) |
description 可选 | 描述 |
@apiSuccessExample
请求成功后返回的字段参数例子
/**
* @apiSuccessExample [{type}] [title] example
*/
| Name | Description |
|---|---|
{type} 可选 | 请求数据结构 |
title 可选 | 例子的一个简短的标题 |
| example | 例子的详细信息,可多个例子并存 |
@apiError & @apiErrorExample
这个的用法跟@apiSuccess、@apiSuccessExample的用法相类似。
更多用法参考官网:http://apidocjs.com/