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的相对路径,支持多层

  1. {dir}/@{method}.js
  2. {dir}/{operation}.js
  3. {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 _() {
  }

语法说明:

  1. 描述信息包含在多行注释/* ... */
  2. 每行首的空白字符和*字符会被忽略
  3. 空白行会被忽略
  4. 每行由@{directive}作为开始进行信息的定义
  5. 第一个@{directive}之前的内容作为操作描述
  6. 不以_开头的函数名作为operationId

支持的指示符(基础部分):

更多指示符请看左边的导航列表

Directive Cardinality Description
@{METHOD} 0..1 HTTP方法的定义,默认为GET
@param 0..* 定义操作的输入参数,支持多个
@param-include 0..* 定义操作的输入参数,引用预定义好的参数
@returns 0..* 定义操作的返回状态和输出参数
@returns-include 0..* 定义操作的输出,引用预定义好的输出

支持的数据类型

在API操作中的类型使用Swagger的定义,具体请看数据类型

Bingosoft            updated 2018-07-23
上一篇:API模型 下一篇:API标签

results matching ""

    No results matching ""