原文地址:梁桂钊的博客node
在服务端开发过程当中,咱们须要提供一份 API 接口文档给 Web 端和移动端使用。实现 API 接口文档编写工做,有不少种方式,例如经过 Word 文档编写,或者经过 MediaWiki 进行维护。此外,还有比较流行的方式是利用 Swagger 自动化生成文档。这里,笔者想分享另外一个 Web API 文档生成工具 apidoc。git
apidoc 是经过源码中的注释来生成 Web API 文档。所以,apidoc 对现有代码能够作到无侵入性。此外,apidoc 能够支持多种语言 C#, Go, Dart, Java, JavaScript, PHP, TypeScript (all DocStyle capable languages),CoffeeScript,Erlang,Perl,Python,Ruby,Lua。经过 apidoc 能够很是方便地生成可交互地文档页面。github
首先,咱们须要 node.js 的支持。在搭建好 node.js 环境后,经过终端输入 npm 命名进行安装。npm
npm install apidoc -g
复制代码
接着,咱们还须要添加 apidoc.json 文件到项目工程的根目录下。json
{
"name": "example",
"version": "0.1.0",
"description": "apiDoc basic example",
"title": "Custom apiDoc browser title",
"url" : "https://api.github.com/v1"
}
复制代码
这里,笔者主要演示 Java 注释如何和 apidoc 结合使用。如今,咱们先来看一个案例。api
/**
* @api {GET} logistics/policys 查询签收预警策略
* @apiDescription 查询签收预警策略
* @apiGroup QUERY
* @apiName logistics/policys
* @apiParam {Integer} edition 平台类型
* @apiParam {String} tenantCode 商家名称
* @apiPermission LOGISTICS_POCILY
*/
复制代码
最后,咱们在终端输入 apidoc 命令进行文档生成。这里,咱们用本身的项目工程的根目录替代 myapp/,用须要生成文档的地址替代 apidoc/。bash
apidoc -i myapp/ -o apidoc/
复制代码
例如,笔者的配置是这样的。微信
apidoc -i /Users/lianggzone/Documents/dev-space/git-repo -o /Users/lianggzone/Documents/dev-space/apidoc/
复制代码
@api 标签是必填的,只有使用 @api 标签的注释块才会被解析生成文档内容。格式以下:app
@api {method} path [title]
复制代码
这里,有必要对参数内容进行讲解。工具
参数名 | 描述 |
---|---|
method | 请求方法, 如 POST,GET,POST,PUT,DELETE 等。 |
path | 请求路径。 |
title【选填】 | 简单的描述 |
@apiDescription 对 API 接口进行描述。格式以下:
@apiDescription text
复制代码
@apiGroup 表示分组名称,它会被解析成一级导航栏菜单。格式以下:
@apiGroup name
复制代码
@apiName 表示接口名称。注意的是,在同一个 @apiGroup 下,名称相同的 @api 经过 @apiVersion 区分,否者后面 @api 会覆盖前面定义的 @api。格式以下:
@apiName name
复制代码
@apiVersion 表示接口的版本,和 @apiName 一块儿使用。格式以下:
@apiVersion version
复制代码
@apiParam 定义 API 接口须要的请求参数。格式以下:
@apiParam [(group)] [{type}] [field=defaultValue] [description]
复制代码
这里,有必要对参数内容进行讲解。
参数名 | 描述 |
---|---|
(group)【选填】 | 参数进行分组 |
{type}【选填】 | 参数类型,包括{Boolean}, {Number}, {String}, {Object}, {String[]}, (array of strings), ... |
{type{size}}【选填】 | 能够声明参数范围,例如{string{..5}}, {string{2..5}}, {number{100-999}} |
{type=allowedValues}【选填】 | 能够声明参数容许的枚举值,例如{string="small","huge"}, {number=1,2,3,99} |
field | 参数名称 |
[field] | 声明该参数可选 |
=defaultValue【选填】 | 声明该参数默认值 |
description【选填】 | 声明该参数描述 |
相似的用法,还有 @apiHeader 定义 API 接口须要的请求头,@apiSuccess 定义 API 接口须要的响应成功,@apiError 定义了 API 接口须要的响应错误。
这里,咱们看一个案例。
/**
* @apiParam {Integer} edition=1 平台类型
* @apiParam {String} [tenantCode] 商家名称
*/
复制代码
此外,还有 @apiParamExample,@apiHeaderExample, @apiErrorExample,@apiSuccessExample 能够用来在文档中提供相关示例。
@apiPermission 定义 API 接口须要的权限点。格式以下:
@apiPermission name
复制代码
此外,还有一些特别的注解。例如 @apiDeprecated 表示这个 API 接口已经废弃,@apiIgnore 表示忽略这个接口的解析。关于更多的使用细节,能够阅读官方文档:http://apidocjs.com/#demo
最后,咱们用官方的案例,讲解下一个完整的配置。
首先,配置 apidoc.json,内容以下:
{
"name": "example",
"version": "0.1.0",
"description": "A basic apiDoc example"
}
复制代码
接着,咱们配置相关的 Java 源码注释。
/**
* @api {get} /user/:id Request User information
* @apiName GetUser
* @apiGroup User
*
* @apiParam {Number} id Users unique ID.
*
* @apiSuccess {String} firstname Firstname of the User.
* @apiSuccess {String} lastname Lastname of the User.
*
* @apiSuccessExample Success-Response:
* HTTP/1.1 200 OK
* {
* "firstname": "John",
* "lastname": "Doe"
* }
*
* @apiError UserNotFound The id of the User was not found.
*
* @apiErrorExample Error-Response:
* HTTP/1.1 404 Not Found
* {
* "error": "UserNotFound"
* }
*/
复制代码
而后,执行命名生成文档。
apidoc -i myapp/ -o apidoc/
复制代码
生成的页面,以下所示。
(完)
更多精彩文章,尽在「服务端思惟」微信公众号!