
# 调试API
#### 功能介绍
调试一个API在指定运行环境下的定义，接口调用者需要具有操作该API的权限。
#### URI
POST /v1/{project_id}/apic/instances/{instance_id}/apis/debug/{api_id}
表1路径参数 
| 参数          | 是否必选 | 参数类型   | 描述                                  |
|:---|:---|:---|:---|
| project_id  | 是    | String | 项目ID，获取方式请参见API参考的"附录 \> 获取项目ID"章节。 |
| instance_id | 是    | String | 实例ID                                |
| api_id      | 是    | String | API的编号                              |
   
#### 请求参数
表2请求Header参数 
| 参数           | 是否必选 | 参数类型   | 描述                                                       |
|:---|:---|:---|:---|
| X-Auth-Token | 是    | String | 用户Token。通过调用IAM服务获取用户Token接口获取（响应消息头中X-Subject-Token的值）。 |
   
表3请求Body参数 
| 参数         | 是否必选 | 参数类型                          | 描述                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      |
|:---|:---|:---|:---|
| body       | 否    | String                        | 请求消息体，最长2097152字节                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       |
| header     | 否    | Map\<String,Array\<String\>\> | 头域参数，每个参数值为字符串数组，每个参数名称有如下约束： - 英文字母、数字、点、中连线组成   - 必须以英文字母开头，最长32字节   - 不支持以"X-Apig-"或"X-Sdk-"开头，不区分大小写   - 不支持取值为"X-Stage"，不区分大小写   - mode为MARKET或CONSUMER时，不支持取值为"X-Auth-Token"和"Authorization"，不区分大小写    说明： 头域名称在使用前会被规范化，如："x-MY-hEaDer"会被规范化为"X-My-Header" |
| method     | 是    | String                        | API的请求方法                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                |
| mode       | 是    | String                        | 调试模式 - DEVELOPER 调试尚未发布的API定义   - MARKET 调试云市场已购买的API   - CONSUMER 调试指定运行环境下的API定义    说明： DEVELOPER模式，接口调用者必须是API拥有者。 MARKET模式，接口调用者必须是API购买者或拥有者。 CONSUMER模式，接口调用者必须有API在指定环境上的授权信息或是API拥有者。                                                                                                                                                                                                                                                     |
| path       | 是    | String                        | API的请求路径，需以"/"开头，最大长度1024 说明： 须符合路径规范，百分号编码格式可被正确解码                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         |
| query      | 否    | Map\<String,Array\<String\>\> | 查询参数，每个参数值为字符串数组，每个参数名称有如下约束： - 英文字母、数字、点、下划线、中连线组成   - 必须以英文字母开头，最长32字节   - 不支持以"X-Apig-"或"X-Sdk-"开头，不区分大小写   - 不支持取值为"X-Stage"，不区分大小写                                                                                                                                                                                                                                 |
| scheme     | 是    | String                        | API的请求协议 - HTTP   - HTTPS                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           |
| app_key    | 否    | String                        | 调试请求使用的APP的key                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          |
| app_secret | 否    | String                        | 调试请求使用的APP的密钥                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           |
| domain     | 否    | String                        | API的访问域名，未提供时根据mode的取值使用如下默认值： - DEVELOPER API分组的子域名   - MARKET 云市场为API分组分配的域名   - CONSUMER API分组的子域名                                                                                                                                                                                                                                                                                                                                                                         |
| stage      | 否    | String                        | 调试请求指定的运行环境，仅在mode为CONSUMER时有效，未提供时有如下默认值: - CONSUMER RELEASE                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             |
   
#### 响应参数
**状态码：200**
表4响应Body参数 
| 参数       | 参数类型    | 描述                                                                                                               |
|:---|:---|:---|
| request  | String  | 调试请求报文内容                                                                                                         |
| response | String  | 调试响应报文内容，响应消息体最大支持2097152字节，超过部分会被截断 说明： 响应消息体超过限制长度时，超过部分会被截断，并追加"\[TRUNCATED\]"信息。 |
| latency  | Integer | 调试耗时，单位：毫秒                                                                                                       |
| log      | String  | 调试过程日志                                                                                                           |
   
**状态码：400**
表5响应Body参数 
| 参数         | 参数类型   | 描述   |
|:---|:---|:---|
| error_code | String | 错误码  |
| error_msg  | String | 错误描述 |
   
**状态码：401**
表6响应Body参数 
| 参数         | 参数类型   | 描述   |
|:---|:---|:---|
| error_code | String | 错误码  |
| error_msg  | String | 错误描述 |
   
**状态码：403**
表7响应Body参数 
| 参数         | 参数类型   | 描述   |
|:---|:---|:---|
| error_code | String | 错误码  |
| error_msg  | String | 错误描述 |
   
**状态码：404**
表8响应Body参数 
| 参数         | 参数类型   | 描述   |
|:---|:---|:---|
| error_code | String | 错误码  |
| error_msg  | String | 错误描述 |
   
**状态码：500**
表9响应Body参数 
| 参数         | 参数类型   | 描述   |
|:---|:---|:---|
| error_code | String | 错误码  |
| error_msg  | String | 错误描述 |
   
#### 请求示例
```
{
  "mode" : "DEVELOPER",
  "scheme" : "HTTPS",
  "method" : "GET",
  "path" : "/test/mock"
}
```
#### 响应示例
**状态码：200**
OK
```
{
  "request" : "GET /test/mock HTTP/1.1\r\nHost: c77f5e81d9cb4424bf704ef2b0ac7600.apic.****.com\r\nUser-Agent: APIGatewayDebugClient/1.0\r\nX-Apig-Mode: debug\r\n\r\n",
  "response" : "HTTP/1.1 200 OK\r\nTransfer-Encoding: chunked\r\nConnection: keep-alive\r\nContent-Type: application/json\r\nDate: Mon, 03 Aug 2020 02:51:22 GMT\r\nServer: api-gateway\r\nX-Apig-Latency: 0\r\nX-Apig-Ratelimit-Api: remain:99,limit:100,time:1 minute\r\nX-Apig-Ratelimit-Api-Allenv: remain:14999,limit:15000,time:1 second\r\nX-Request-Id: d4ec6e33148bdeffe8f55b43472d1251\r\n\r\nmock success",
  "latency" : 5,
  "log" : ""
}
```
**状态码：400**
Bad Request
```
{
  "error_code" : "APIG.2011",
  "error_msg" : "Invalid parameter value,parameterName:mode. Please refer to the support documentation"
}
```
**状态码：401**
Unauthorized
```
{
  "error_code" : "APIG.1002",
  "error_msg" : "Incorrect token or token resolution failed"
}
```
**状态码：403**
Forbidden
```
{
  "error_code" : "APIG.1005",
  "error_msg" : "No permissions to request this method"
}
```
**状态码：404**
Not Found
```
{
  "error_code" : "APIG.3002",
  "error_msg" : "API 3a955b791bd24b1c9cd94c745f8d1aad does not exist"
}
```
**状态码：500**
Internal Server Error
```
{
  "error_code" : "APIG.9999",
  "error_msg" : "System error"
}
```
#### 状态码
| 状态码 | 描述                    |
|:---|:---|
| 200 | OK                    |
| 400 | Bad Request           |
| 401 | Unauthorized          |
| 403 | Forbidden             |
| 404 | Not Found             |
| 500 | Internal Server Error |
   
#### 错误码
请参见[错误码](https://support.huaweicloud.com/api-roma/ErrorCode.html)。
