
# 以JSON文件的方式传递API参数
KooCLI调用云服务的API时，如果API的参数过多，不便直接在命令中传入，用户可通过"--cli-jsonInput"将云服务API的部分或全部参数以JSON文件的形式输入。剩余的其他参数，例如[KooCLI系统参数](https://support.huaweicloud.com/hcli_faq/hcli_19_001.html)、未通过JSON文件传入的云服务API参数等，仍可在命令中传入，例如：
```
hcloud ECS CreateServers --cli-region="cn-north-4" --cli-read-timeout=60 --cli-jsonInput=C:\cli\Ecs_CreateServers.json
{
    "job_id": "ff808082******************ae0646",
    "serverIds": [
        "dd86****-****-****-****-****91527651"
    ]
}
```
通过"--cli-jsonInput"选项传入API参数时，首先需要编写一个JSON文件，在该文件中，各API参数需要根据其在request中的位置信息被放在对应的Key下。
构造JSON文件的方法如下：
#### 使用--skeleton参数生成
使用"--skeleton"[生成并填写JSON格式API入参骨架文件](https://support.huaweicloud.com/usermanual-hcli/hcli_05_19.html)，并将该文件以"--cli-jsonInput=${JSON文件名}"传入。
#### 根据API Explorer页面生成
在API Explorer页面获取API参数，并写入JSON文件：
1. 在原命令末尾加"--help"，从结果中的"Params"中查看目标API各参数的位置信息。
2. 创建JSON文件，建议其名称为"${服务名}_${API名}.json"，其原始内容如下： 
   ```
   {
       "header": {},
       "path": {},
       "query": {},
       "formData": {},
       "cookie": {},
       "body": {}
   }
   ```
   
   
3. 根据原始JSON文件中的Key的顺序填充其对应位置的参数： 
   - 对于非**body** 位置的参数，请在原始JSON文件对应Key的大括号中，以**"参数名称":"参数值"** 的格式**成对** 填入各参数及其值，同一大括号中每对数据之间以","隔开，最后一对数据与"}"之间**不需要**再加","；
   
   - 对于**body** 位置的参数，在[API Explorer](https://console.huaweicloud.com/apiexplorer)页面填写其"**Body** "中各参数的值，填写完成后单击"切换为文本输入"，如[下图]所示，复制文本框中转为JSON格式的参数内容，将其粘贴在原始JSON文件的"body"Key之后，**覆盖** **原"body"Key后对应的大括号**；
   
   
   图1获取用于cli-jsonInput文件的body位置参数   
   ![](https://support.huaweicloud.com/usermanual-hcli/zh-cn_image_0000001558186302.png "点击放大")
   
   
4. 各位置的参数填写完成后，若某个位置Key上没有参数，需在JSON文件中**删除该位置的Key所在的行的内容。**注意：需同时删除最外层"}"与其前一个"}"之间的","；
5. 在原KooCLI命令中用"--cli-jsonInput=${JSON文件所在路径}"代替原命令中传入的API参数，重新调用。 
   如在上面的示例中，"--cli-jsonInput=C:\\cli\\Ecs_CreateServers.json"传入的Ecs_CreateServers.json文件的内容应为：
   ```
   {
       "path": {
           "project_id": "0dd8cb41******************a84546"
       },
       "body": {
           "server": {
               "adminPass": "wh***********",
               "auto_terminate_time": "2022-01-19T03:30:52Z",
               "availability_zone": "cn-north-4a",
               "data_volumes": [
                   {
                       "multiattach": true,
                       "shareable": true,
                       "size": 100,
                       "volumetype": "SATA"
                   }
               ],
               "flavorRef": "2d53****-****-****-****-****257bf163",
               "imageRef": "7059****-****-****-****-****0b5e9e4c",
               "name": "ecs_server_01",
               "nics": [
                   {
                       "ipv6_enable": true,
                       "subnet_id": "4eb2****-****-****-****-****ff9a042d"
                   }
               ],
               "publicip": {
                   "eip": {
                       "bandwidth": {
                           "sharetype": "PER",
                           "size": 30
                       },
                       "iptype": "5_sbgp"
                   }
               },
               "root_volume": {
                   "volumetype": "SATA"
               },
               "server_tags": [
                   {
                       "key": "date",
                       "value": "211102"
                   }
               ],
               "vpcid": "5aa5****-****-****-****-****1df05a3a"
           }
       }
   }
   ```
   
   
![](https://support.huaweicloud.com/usermanual-hcli/public_sys-resources/notice_3.0-zh-cn.png)
使用"--cli-jsonInput"选项时，请留意这些[注意事项](https://support.huaweicloud.com/hcli_faq/hcli_19_004.html)。
