
# 调试API
#### 功能介绍
调试一个API在指定运行环境下的定义，接口调用者需要具有操作该API的权限。
#### URI
HTTP/HTTPS请求方法以及URI如下表所示。
表1HTTP/HTTPS请求方法以及URI 
| 请求方法 | URI                             |
|:---|:---|
| POST | /v1.0/apigw/apis/debug/{api_id} |
   
URI中的参数说明如下表所示。
表2参数说明 
| 名称     | 是否必选 | 类型     | 说明     |
|:---|:---|:---|:---|
| api_id | 是    | String | API的编号 |
   
#### 请求消息
表3参数说明 
| 名称         | 是否必选 | 类型     | 说明                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         |
|:---|:---|:---|:---|
| scheme     | 是    | String | API的请求协议 - HTTP  - HTTPS                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           |
| method     | 是    | String | API的请求方法 - GET  - POST  - PUT  - DELETE  - HEAD  - PATCH  - OPTIONS                                                                                      |
| domain     | 否    | String | API的访问域名，未提供时根据mode的取值使用如下默认值： - DEVELOPER API分组的子域名  - MARKET 云商店为API分组分配的域名  - CONSUMER API分组的子域名                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     |
| path       | 是    | String | API的请求路径，需以"/"开头，最大长度1024 说明： 须符合路径规范，百分号编码格式可被正确解码                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  |
| query      | 否    | 字典数据类型 | 查询参数，每个参数值为字符串数组，每个参数名称有如下约束： - 英文字母、数字、点、下划线、中连线组成  - 必须以英文字母开头，最长32字节  - 不支持以"X-Apig-"或"X-Sdk-"开头，不区分大小写  - 不支持取值为"X-Stage"，不区分大小写                                                                                                                                                                                                                                                                                                                     |
| header     | 否    | 字典数据类型 | 头域参数，每个参数值为字符串数组，每个参数名称有如下约束： - 英文字母、数字、点、中连线组成  - 必须以英文字母开头，最长32字节  - 不支持以"X-Apig-"或"X-Sdk-"开头，不区分大小写  - 不支持取值为"X-Stage"，不区分大小写  - mode为MARKET或CONSUMER时，不支持取值为"X-Auth-Token"和"Authorization"，不区分大小写   说明： 头域名称在使用前会被规范化，如："x-MY-hEaDer"会被规范化为"X-My-Header" |
| body       | 否    | String | 请求消息体，最长2097152字节                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          |
| mode       | 是    | String | 调试模式 - DEVELOPER 调试尚未发布的API定义  - MARKET 调试云商店已购买的API  - CONSUMER 调试指定运行环境下的API定义 说明： DEVELOPER模式，接口调用者必须是API拥有者。 MARKET模式，接口调用者必须是API购买者或拥有者。 CONSUMER模式，接口调用者必须有API在指定环境上的授权信息或是API拥有者。                                                                                                                                                                                                               |
| app_key    | 否    | String | 调试请求使用的APP的key                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             |
| app_secret | 否    | String | 调试请求使用的APP的密钥                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              |
| stage      | 否    | String | 调试请求指定的运行环境，仅在mode为CONSUMER时有效，未提供时有如下默认值: - CONSUMER RELEASE                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             |
   
请求消息样例：
```
{
  "mode": "DEVELOPER",
  "scheme": "HTTPS",
  "method": "GET",
  "path": "/test",
  "query": {
    "city": [
      "city01",
      "city02"
    ]
  },
  "header": {
    "X-My-City": [
      "city01",
      "city02"
    ]
  }
}
```
#### 响应消息
表4参数说明 
| 参数       | 类型     | 说明                                                                                                                                                                                                            |
|:---|:---|:---|
| request  | String | 调试请求报文内容                                                                                                                                                                                                      |
| response | String | 调试响应报文内容，响应消息体最大支持2097152字节，超过部分会被截断 说明： 响应消息体超过限制长度时，超过部分会被截断，并追加"\[TRUNCATED\]"信息。 |
| latency  | String | 调试耗时，单位：毫秒                                                                                                                                                                                                    |
| log      | String | 调试过程日志                                                                                                                                                                                                        |
   
响应消息样例：
```
{
  "request": "GET /test?city=city01&city=city02 HTTP/1.1\r\nHost: edf94892b11d440795562cb81c5be059.apigw.example.com\r\nUser-Agent: APIGatewayDebugClient/1.0\r\nX-Apig-Mode: debug\r\nX-My-City: city01\r\nX-My-City: city02\r\n\r\n",
  "response": "HTTP/1.1 200 OK\r\nContent-Length: 33\r\nConnection: keep-alive\r\nContent-Type: application/json; charset=utf-8\r\nDate: Fri, 24 Aug 2018 10:36:47 GMT\r\nServer: api-gateway\r\nX-Apig-Latency: 13\r\nX-Apig-Ratelimit-Api: remain:92,limit:100,time:1 minute\r\nX-Apig-Ratelimit-Api-Allenv: remain:9,limit:10,time:1 second\r\nX-Apig-Upstream-Latency: 1\r\nX-Request-Id: 12f69943cc2fa4f8a3674ee947655339\r\n\r\n{\"version\":\"4.0.12.201808190004\"}",
  "latency": "12",
  "log": ""
}
```
#### 状态码
表5返回消息说明 
| 状态码 | 说明                    |
|:---|:---|
| 200 | OK                    |
| 400 | Bad Request           |
| 401 | Unauthorized          |
| 403 | Forbidden             |
| 404 | Not Found             |
| 500 | Internal Server Error |
   
