文档首页/ 华为云命令行工具服务 KooCLI/ 常见问题/ 参数相关/ 云服务API的body位置参数值如何置空?
更新时间:2023-10-16 GMT+08:00

云服务API的body位置参数值如何置空?

对于云服务API的body位置的参数,KooCLI支持在任意层级置空:

  • 若当前层级的值实际类型为map,则置空时参数值应为“{}”。
  • 若当前层级的值实际类型为数组,则置空时参数值应为“[]”。
以云服务“ECS”的operation“BatchStopServers”为例,其body位置存在参数“os-stop.servers.[N].id”和“os-stop.type”,如下:
hcloud ECS BatchStopServers --cli-region=ap-southeast-1 --help

KooCLI(Koo Command Line Interface) Version 3.2.8 Copyright(C) 2020-2023 www.huaweicloud.com

Service:
  ECS

Description:
  根据给定的云服务器ID列表,批量关闭云服务器,一次最多可以关闭1000台。

Method:
  POST

Params:
  --cli-region
    required    string  当前可调用的区域.若命令中未输入,将使用当前配置项中的cli-region
  --os-stop.servers.[N].id
    required    string  body    云服务器ID。格式为:--os-stop.servers.1.id=value1 ...
  --project_id
    required    string  path    项目ID。若命令中未输入,将根据认证信息获取指定区域的父级项目ID,或使用当前配置项中的cli-project-id
  --os-stop.type
    optional    string  body    关机类型,默认为SOFT:。[SOFT|HARD]
    - SOFT:普通关机(默认)。
    - HARD:强制关机。
  • 不置空:
    给参数“os-stop.servers.[N].id”和“os-stop.type”分别传入参数值,使用“--dryrun”查看请求body体内容,如下:
    hcloud ECS BatchStopServers --cli-region=ap-southeast-1 --os-stop.servers.1.id="test" --os-stop.type="SOFT" --dryrun
    --------------------------------- dry-run模式跳过实际运行,当前请求为: ---------------------------------
    POST https://ecs.ap-southeast-1.myhuaweicloud.com/v1/0a152ab****************262d035e8/cloudservers/action
    Content-Type: application/json;charset=UTF-8
    X-Project-Id: 0a152ab****************262d035e8
    X-Sdk-Date: 20221116T121721Z
    Authorization: ****
    
    {
      "os-stop": {
        "servers": [
          {
            "id": "test"
          }
        ],
        "type": "SOFT"
      }
    }
  • 数组类型参数置空:
    若将参数“os-stop.servers.[N].id”的数组(即“[N]”及其之后的内容)置空,因“os-stop.servers”指向的值实际类型为数组,故可传入参数“--os-stop.servers="[]"”,使用“--dryrun”查看请求body体内容,如下:
    hcloud ECS BatchStopServers --cli-region=ap-southeast-1 --os-stop.servers="[]" --os-stop.type="SOFT" --dryrun
    --------------------------------- dry-run模式跳过实际运行,当前请求为: ---------------------------------
    POST https://ecs.ap-southeast-1.myhuaweicloud.com/v1/0a152ab****************262d035e8/cloudservers/action
    X-Project-Id: 0a152ab****************262d035e8
    X-Sdk-Date: 20221116T122841Z
    Authorization: ****
    Content-Type: application/json;charset=UTF-8
    
    {
      "os-stop": {
        "servers": [],
        "type": "SOFT"
      }
    }
  • map类型参数置空:
    若将参数“os-stop.servers.[N].id”和“os-stop.type”的共有的父级“os-stop”置空,因其指向的值实际类型为map,故可传入参数“--os-stop="{}"”,使用“--dryrun”查看请求body体内容,如下:
    hcloud ECS BatchStopServers --cli-region=ap-southeast-1 --os-stop="{}" --dryrun
    --------------------------------- dry-run模式跳过实际运行,当前请求为: ---------------------------------
    POST https://ecs.ap-southeast-1.myhuaweicloud.com/v1/0a152ab****************262d035e8/cloudservers/action
    Content-Type: application/json;charset=UTF-8
    X-Project-Id: 0a152ab****************262d035e8
    X-Sdk-Date: 20221117T013616Z
    Authorization: ****
    
    {
      "os-stop": {}
    }

KooCLI执行过程中会校验参数值是否匹配,若将不适合的空值传给参数,会提醒错误信息。例如给实际为map类型的参数“os-stop”赋值数组类型的空值“[]”,则提示如下错误:

[USE_ERROR]map类型参数os-stop的值不正确