API操作定义
API操作的定义保存在
app/operations
目录中
一个AP操作的定义需要包含以下基本信息:
Name | Description |
---|---|
Path | HTTP请求路径 |
Method | HTTP请求方法,包括GET、POST、PUT、DELETE等 |
Parameters | 请求参数定义 |
Responses | 响应状态和输出参数的定义 |
Headers | 输出HTTP的Header定义 |
另外还有安全等方面的定义,在后续各个单独的章节中进行说明。
Path定义
API操作的路径由目录路径和文件名决定。
下面以Javascript为例说明Path定义的几种方式:
{dir}
是相对于app/operations
的相对路径,支持多层
- {dir}/@{method}.js
- {dir}/{operation}.js
- {dir}/{operation}@{method}.js
Examples:
app
└── operations
├── @get.js GET /
└── user
├── @get.js GET /user
├── deleted.js GET? /user/deleted
├── enabled.js GET? /user/enabled
└── {id}
├── @delete.js DELETE /user/{id}
├── password@get.js GET /user/{id}/password
└── password@post.js POST /user/{id}/password
产生的路径:
Method | Path | Operation |
---|---|---|
GET | / | @get.js |
GET | /user | user/@get.js |
GET? | /user/deleted | user/deleted.js |
GET? | /user/enabled | user/enabled.js |
DELETE | /user/{id} | user/{id}/@delete.js |
GET | /user/{id}/password | user/{id}/password@get.js |
POST | /user/{id}/password | user/{id}/password@post.js |
其中带问号的
GET?
是由于文件名没有Method,需要根据文件内容中的定义才能确定
详细定义
在jmms中,API操作的详细定义使用jsdoc语法(经过裁剪和扩展)进行描述。
/**
* 这是一个say hello的操作
*
* @GET
*
* @param {string} who - 要say hello的名字
*
* @returns {string} 返回完整的say hello消息
*/
function _() {
}
语法说明:
- 描述信息包含在多行注释
/* ... */
中 - 每行首的空白字符和
*
字符会被忽略 - 空白行会被忽略
- 每行由@{directive}作为开始进行信息的定义
- 第一个@{directive}之前的内容作为操作描述
- 不以
_
开头的函数名作为operationId
支持的指示符(基础部分):
更多指示符请看左边的导航列表
Directive | Cardinality | Description |
---|---|---|
@{METHOD} | 0..1 | HTTP方法的定义,默认为GET |
@param | 0..* | 定义操作的输入参数,支持多个 |
@param-include | 0..* | 定义操作的输入参数,引用预定义好的参数 |
@returns | 0..* | 定义操作的返回状态和输出参数 |
@returns-include | 0..* | 定义操作的输出,引用预定义好的输出 |
支持的数据类型
在API操作中的类型使用Swagger的定义,具体请看数据类型。