
# 新建变量
#### 功能介绍
将API发布到不同的环境后，对于不同的环境，可能会有不同的环境变量，比如，API的服务部署地址，请求的版本号等。
用户可以定义不同的环境变量，用户在定义API时，在API的定义中使用这些变量，当调用API时，API网关会将这些变量替换成真实的变量值，以达到不同环境的区分效果。
环境变量定义在API分组上，该分组下的所有API都可以使用这些变量。
![](https://support.huaweicloud.com/api-apig/public_sys-resources/note_3.0-zh-cn.png)
1. 环境变量的变量名称必须保持唯一，即一个分组在同一个环境上不能有两个同名的变量
2. 环境变量区分大小写，即变量ABC与变量abc是两个不同的变量
3. 设置了环境变量后，使用到该变量的API的调试功能将不可使用。
4. 定义了环境变量后，使用到环境变量的地方应该以对称的#标识环境变量，当API发布到相应的环境后，会对环境变量的值进行替换，如：定义的API的URL为：<https://#address#:8080>，环境变量address在RELEASE环境上的值为：192.168.1.5，则API发布到RELEASE环境后的真实的URL为：https://192.168.1.5:8080。
 
#### URI
HTTP/HTTPS请求方法以及URI如下表所示。
表1HTTP/HTTPS请求方法以及URI 
| 请求方法 | URI                                                          |
|:---|:---|
| POST | /v1/{project_id}/apigw/instances/{instance_id}/env-variables |
   
URI中的参数说明如下表所示。
表2参数说明 
| 名称          | 是否必选 | 类型     | 说明                                       |
|:---|:---|:---|:---|
| project_id  | 是    | String | 项目ID。可从控制台"我的凭证"中获取region下项目ID，管理员权限可查询。 |
| instance_id | 是    | String | 实例ID，可从API网关控制台的专享版实例信息中获取。              |
   
#### 请求消息
表3参数说明 
| 参数             | 是否必选 | 类型     | 说明                                                                                                                                                                                                                                                                                                        |
|:---|:---|:---|:---|
| env_id         | 是    | String | 环境编号                                                                                                                                                                                                                                                                                                      |
| group_id       | 是    | String | API分组编号                                                                                                                                                                                                                                                                                                   |
| variable_name  | 是    | String | 变量名 支持英文字母、数字、英文格式的下划线、中划线，必须以英文字母开头，3 \~ 32个字符。在API定义中等于#Name的值#部分（区分大小写），发布到环境里的API被变量值替换。 说明： 中文字符必须为UTF-8或者unicode编码。 |
| variable_value | 是    | String | 变量值 支持英文字母、数字、英文格式的下划线、中划线，斜线（/）、点、冒号，1 \~ 255个字符。                                                                                                                                                                                               |
   
请求消息样例：
```
{
"env_id": "cca3616a-f368-4b32-9064-b2a631cb3eeb",
"group_id": "73c58022-f20d-495a-a188-85d718647f09",
"variable_name": "address",
"variable_value": "192.168.1.5"
}
```
#### 响应消息
表4参数说明 
| 参数             | 类型     | 说明      |
|:---|:---|:---|
| id             | String | 环境变量的编号 |
| env_id         | String | 环境编号    |
| group_id       | String | API分组编号 |
| variable_name  | String | 变量名     |
| variable_value | String | 变量值     |
   
响应消息样例：
```
{
"id": "104185e5-3e8f-4c63-a7e5-ef4117bf870c",
"env_id": "cca3616a-f368-4b32-9064-b2a631cb3eeb",
"group_id": "73c58022-f20d-495a-a188-85d718647f09",
"variable_name": "address",
"variable_value": "192.168.1.5"
}
```
#### 状态码
表5返回消息说明 
| 状态码 | 说明                    |
|:---|:---|
| 201 | Created               |
| 400 | Bad Request           |
| 401 | Unauthorized          |
| 403 | Forbidden             |
| 404 | Not Found             |
| 500 | Server Internal Error |
   
