以JSON文件的方式传递API参数
KooCLI调用云服务的API时,如果API的参数过多,不便直接在命令中传入,用户可通过“--cli-jsonInput”将云服务API的部分或全部参数以JSON文件的形式输入。剩余的其他参数,例如KooCLI系统参数、未通过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”生成并填写JSON格式API入参骨架文件,并将该文件以“--cli-jsonInput=${JSON文件名}”传入。
方法二
在API Explorer页面获取API参数,并写入JSON文件:
- 在原命令末尾加“--help”,从结果中的“Params”中查看目标API各参数的位置信息。
- 创建JSON文件,建议其名称为“${服务名}_${API名}.json”,其原始内容如下:
{ "header": {}, "path": {}, "query": {}, "formData": {}, "cookie": {}, "body": {} }
- 根据原始JSON文件中的Key的顺序填充其对应位置的参数:
- 对于非body位置的参数,请在原始JSON文件对应Key的大括号中,以"参数名称":"参数值"的格式成对填入各参数及其值,同一大括号中每对数据之间以","隔开,最后一对数据与“}”之间不需要再加",";
- 对于body位置的参数,在API Explorer页面填写其“Body”中各参数的值,填写完成后单击“切换为文本输入”,如下图所示,复制文本框中转为JSON格式的参数内容,将其粘贴在原始JSON文件的“body”Key之后,覆盖原“body”Key后对应的大括号;
- 各位置的参数填写完成后,若某个位置Key上没有参数,需在JSON文件中删除该位置的Key所在的行的内容。注意:需同时删除最外层“}”与其前一个“}”之间的“,”;
- 在原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" } } }
使用“--cli-jsonInput”选项时,请留意这些注意事项。