生成Restful web API文档,支持大部分的语言,java 、javascript、 php、 python、 c # 、ruby
注意:它是根据你源码中的API注释来生成相应的文档的。
github: https://github.com/apidoc/apidoc/
github examples:http://apidocjs.com/#examples
a complex example:http://apidocjs.com/#example-full
通过一个小例子来说明如何使用。
1、首先安装Node.js(自行百度)
因为apiDoc是一个node module,所以首先必须安装node.js
2、安装apiDoc
npm install -g apidoc
3、这里选用一个javascript例子来说明,新建一个目录my_project,然后在该目录下新建example.js
1)首先,我们对getUser()方法做一个最基本的标注文档
var currentUser = {
name: 'Mary'
};
/**
*@api{get}/user Request User information
*@apiName GetUser
*@apiGroup User
*{
*name:'Paul',
*age:27
*}
*/
function getUser() {
return {
code: 200,
data: currentUser
};
}
function setName(name) {
if (name.length === 0) {
return {
code: 404,
message: 'NameEmptyError'
};
}
currentUser.name = name;
return {
code: 204
};
}
注意:以上三个参数是必须的。
好,我们现在转到my_project目录下,在cmd中运行apidoc
apidoc
这里,注意下,如果使用默认的apidoc,它会在当前目录和子目录下搜索所有的文件(可识别的文件包括.js、.java等等),你可以设置文件过滤,可以通过apidoc -h查询更多信息。
打开doc/index.html文件
2)现在我们添加API的响应注释
/**
*@api{get}/user Request User information
*@apiName GetUser
*@apiGroup User
*@apiSuccess{String}name The users name
*/
function getUser() {
return {
code: 200,
data: currentUser
};
}
3)增加版本号和示例信息
/**
*@api{get}/user Request User information
*@apiName GetUser
*@apiGroup User
*@apiVersion 0.1.0
*@apiSuccess{String}name The users name
*@apiSuccessExample Example data on success
*{
* name:'Paul'
*}
*/
function getUser() {
return {
code: 200,
data: currentUser
};
}
4)如果要发布新的版本,可能有很多接口信息需要变动。我们新建一个"_apidoc.js"文件,将之前的注释信息放入文件中。
_apidoc.js
/**
*@api{get}/user Request User information
*@apiName GetUser
*@apiGroup User
*@apiVersion 0.1.0
*@apiSuccess{String}name The users name
*@apiSuccessExample Example data on success
*{
* name:'Paul'
*}
*/
"_apidoc.js表示注释信息的历史文件"
现在我们在新文件中改变example.js文件
/**
*@api{get}/user Request User information
*@apiName GetUser
*@apiGroup User
*@apiVersion 0.2.0
*@apiSuccess{String}name The users name
*@apiSuccess{Number}age Calculated age from Birthday
*@apiSuccessExample Example data on success
*{
* name:'Paul',
* age:27
*}
*/
function getUser() {
return {
code: 200,
data: currentUser
};
}
再一次运行apidoc文件
不仅可以看0.2.0的版本,还可以与0.1.0的版本对比。
5)给setName()方法增加相关的注释信息
/**
*@api{put}/user Change User
*@apiName PutUser
*@apiGroup User
*@apiVersion 0.1.0
*@apiParam{String}name New name of the user
*@apiError NameEmptyError The name was empty.Minimum of1
character is required.
*/
function setName(name) {
if (name.length === 0) {
return {
code: 404,
message: 'NameEmptyError'
};
}
currentUser.name = name;
return {
code: 204
};
}
文章原文:https://speakerdeck.com/rottmann/api-documentation