使用 HTTP-Client SDK 可以对 CSB 控制台的 OpenAPI 进行调用,帮助您完成开发和运维操作。

前提条件

  • 下载 HTTP-SDK。
  • 按照 OpenAPI 的文档了解该 API 的调用地址、请求参数、请求方式(POST/GET)和返回值的结构。
  • 确定要调用 API 的安全 Key 信息,即管理员用户创建凭证的一对有效的 Access Key ID 和 Access Key Secret。

背景信息

HTTP-SDK 介绍和使用方式请参见 SDK 参考。使用 HTTP-SDK 调用 Console API 有命令行和代码两种方式。

使用命令行调用

命令行方式通常用来测试或临时调用 OpenAPI。

命令行参数说明:

#java -jar http-client-1.1.5.7.jar
usage: java -jar http-client.jar [options...]
-method <arg>                    请求类型, 默认get, 可选的值为: get, post, cget和cpost
-url <arg>                       测试:请求地址,例如http://CSB服务地址:8086/CSB?p1=v1。CSB服务地址即创建该实例时绑定的SLB的地址
-api <arg>                       服务名
-version <arg>                   服务版本
-ak <arg>                        accessKey, 可选
-sk <arg>                        secretKey, 可选
-D <arg>                         请求参数, 格式: -D "key=value" 可以定义多个-D参数
-H <arg>                         HTTP Header, 格式: -H "key:value" 可以定义多个-H参数
-cbJSON <arg>                    以JSON串方式POST发送的请求body, 例如: -cbJSON "{'name':'wiseking'}"
-cc,--changeCharset              返回值是否需要转换charset
-h,--help                        打印帮助信息
-d,--debug                       打印调试信息
-nonce                           是否做nonce防重放处理,不定义为不做nonce重放处理
-proxy <arg>                     设置代理地址, 格式: proxy_hostname:proxy_port
-sdkv,--sdk-version              SDK版本信息
-sign,--signImpl <arg>           客户端签名类, 可选
-verify,--verifySignImpl <arg>   CSB服务端验签类, 可选
					

下面介绍使用 SDK 命令行调用 API 的示例。

  • 获取实例列表

    java -jar http-sdk.jar \
    -method get \
    -api /api/csbinstance/listCsbs \
    -version 1.1.0.0 \
    -ak replace-ak \
    -sk replace-sk \
    -url https://csb.console.aliyun.com/api/csbinstance/listCsbs
  • 在某个实例中创建一个新的服务组

    java -jar http-sdk.jar \
    -method get \
    -api /api/project/createorupdate \
    -version 1.1.0.0 \
    -ak replace-ak \
    -sk replace-sk \
    -Ddfile=dfile.prop \
    -url https://csb.console.aliyun.com/api/project/createorupdate?csbId=175

    其中 dfile.prop 的内容如下:

    data={"description":"openapi test2","projectName":"lt-测试服务组"}                    
注意
  • API 定义的是接口全路径,必须以“/”开头。
  • 必须根据 API 的要求使用正确的方法(Method)。

使用代码调用

说明 需要在应用的 pom.xml 中添加 http-client-sdk 的依赖。

下面介绍使用代码调用 API 的示例。

  • 获取实例列表

    import com.alibaba.csb.sdk.HttpCaller;
    import com.alibaba.csb.sdk.HttpCallerException;
    import com.alibaba.csb.sdk.HttpParameters;
    import com.alibaba.fastjson.JSON;
    
    public class ConsoleAPI {
        public static void main(String[] args) throws HttpCallerException {
            listCsbInstance();
        }
    
        public static void listCsbInstance() throws HttpCallerException {
            String requestURL = "http://csb.console.1120.daily.server"; //console域名
            String apiName = "/api/csbinstance/listCsbs";
            String queryParams = "";
            String version = "1.1.2.0";
            String method = "get";
            String ak = "ac46xxxx82c64xxxx2c0axxxx4b82xxx";
            String sk = "jonvxxxxGeKVxxxxKpxNxxxx6uxx";
    
            HttpParameters.Builder hp = HttpParameters.newBuilder()
                    .requestURL(requestURL + apiName + queryParams)
                    .api(apiName)
                    .version(version)
                    .accessKey(ak)
                    .secretKey(sk)
                    .method(method);
            hp.putParamsMap("pageNum", "2");
            String ret = HttpCaller.invoke(hp.build());
            System.out.println("ret=" + JSON.toJSONString(JSON.parse(ret), true));
        }
    }
  • 在某个实例中创建一个新的服务组

    import com.alibaba.csb.sdk.HttpCaller;
    import com.alibaba.csb.sdk.HttpCallerException;
    import com.alibaba.csb.sdk.HttpParameters;
    import com.alibaba.fastjson.JSON;
    
    public class ConsoleAPI {
        public static void main(String[] args) throws HttpCallerException {
            createProject();
        }
    
        public static void createProject() throws HttpCallerException {
            String apiName = "/api/project/createorupdate"; // 请求接口
            String version = "1.1.2.0";
            String method = "post";
            String ak = "ac46xxxx82c64xxxx2c0axxxx4b82xxx";
            String sk = "jonvxxxxGeKVxxxxKpxNxxxx6uxx";
            String data = "{\"projectName\":\"CSB服务组测试\"" +
                    ",\"projectOwnerName\":\"CSBTest\"" +
                    ",\"projectOwnerEmail\":\"\"" +
                    ",\"projectOwnerPhoneNum\":\"\"" +
                    ",\"description\":\"\"}";
    
            HttpParameters.Builder hp = HttpParameters.newBuilder()
                    .requestURL(CSB_CONSOLE_DOMAIN + apiName + "?csbId=176") // 请求地址可以附带请求参数
                    .api(apiName)
                    .version(version)                         // 设置调用的API和版本
                    .accessKey(ak).secretKey(sk)              // 设置使用当前实例账号的AK、SK
                    .method(method)                           // 设置调用方式
                    .putParamsMap("data", data);              // 设置请求的form body参数
            String ret = HttpCaller.invoke(hp.build());       // 进行调用
            System.out.println("retStr =" + ret);
        }
    }