文档中心 > 容器服务

快速入门

更新时间:2016/06/30 访问次数:27860

介绍

EWS OpenAPI是EWS提供给开发者和第三方平台的一种技术接入方式。我们可以通过OpenAPI管理在EWS的主机、应用、容器等资源。

开通权限

联系 EWS 管理员开通OpenAPI调用权限,获得相应的accessKey和secretKey

选择接口

在接口文档中找到对应接口,根据文档说明选择参数和方法,在接口前加上前缀,发送HTTP请求即可。形如如下链接可获取service_id=101的Service信息
open-ews.cloud.tmall.com/api/v1/service/101

其中 open-ews.cloud.tmall.com 为接口前缀,所有OpenAPI URL都以此前缀开头,而 v1 表示当前OpenAPI版本为v1,/service/{service_id}表示获取指定的服务

调用接口

为确保OpenAPI调用过程中不被黑客恶意篡改,每一次调用API都需要在Header中携带签名。服务端会根据请求参数,对签名进行验证,签名不合法的请求将会被拒绝。

签名流程

  1. 对所有的API参数进行排序,根据参数名称的ASCII码表的顺序排序。如:foo=1, bar=2, foo_bar=3, foobar=4排序后的顺序是bar=2, foo=1, foo_bar=3, foobar=4。将排序好的参数名和参数值拼装在一起,根据上面的示例得到的结果为paramstr=bar2foo1foo_bar3foobar4
  2. 把拼装好的字符串前后加上secretKey采用utf-8编码,使用HmacMD5签名对拼接字符串进行加密:sign=hex(hmac_md5(secretKey+paramstr+secretKey))
  3. 将上一步计算的签名加入Header中(Key为Authorization),即可开始发送请求至OpenAPI服务端

调用流程

Java范例

Java示例代码下载地址:点击下载

public void test() throws Exception {
      StringBuilder url = new StringBuilder("接口地址");
      Map<String,String> params = new HashMap<String, String>();
      params.put("timestamp", System.currentTimeMillis() + "");
      params.put("accesskey", "xxxxx");
      String sign = SignUtils.sign("xxxxxxxxxxxx", params);
      url.append(mapToGetUrl(params));
      HttpGet get = new HttpGet(url.toString());
      get.setHeader("Authorization",sign);
      CloseableHttpResponse response = httpClient.execute(get);
    }

返回值

调用OpenAPI接口返回值统一格式如下

{
  "code": "0",
  "message": "success",
  "data":{ }
}

其中**code**和**message**分别表示此次API调用的错误码和调用信息,**data** 为接口具体返回内容

错误码定义

Code Message 释义
0 Success 请求成功
1001 InternalError 未知异常
1002 ParamError 参数错误
1003 ParamRequired 缺少参数
1004 SignError 签名错误
1005 ResourceNotExist 资源不存在
1006 NoPermission 没有权限
1007 StatusError 状态错误
1008 ActionNotExist 操作不存在
1009 Timeout 超时

异步接口返回

OpenAPI中包含部分异步接口,即API接口返回时操作可能仍未完成(如启动应用)。要了解异步接口的执行情况,可在接口调用后进行查询。异步接口返回内容包含此次接口调用的Command信息,我们可以根据Command接口查询此次接口调用情况。

范例

调用启动容器接口

curl -d '' -H 'Authorization: xxx' open-ews.cloud.tmall.com/api/v1/node/610474/start

接口返回Command信息

{
  "code": "0",
  "message": "success",
  "data": {
    "commandId": "11f60951-ca0b-4546-b278-50b140111b1a",
    "name": "node_start",
    "status": "CREATED",
    "result": "",
    "resultMsg": "",
    "createTime": "2016-06-24 16:40:53",
    "endTime": "",
    "activitys": []
  }
}

根据返回内容中的commandId查询对应接口执行情况,返回内容详见CommandInfo接口

curl -H 'Authorization: xxx' open-ews.cloud.tmall.com/api/v1/command/11f60951-ca0b-4546-b278-50b140111b1a

FAQ

关于此文档暂时还没有FAQ
返回
顶部