快速开始
认识 API
我们的 API 采用指令式的风格,每个 API 请求包含一个指令(Action
)、指令参数和认证信息(PublicKey
、Signature
)。
公共参数
公共参数是在操作所有 API 的时候,都必需给出的参数,通常会展示在 API 文档所有参数的最上方。
参数名 | 类型 | 描述信息 | 必填 |
---|---|---|---|
Action | string | 对应的 API 指令名称,例如 DescribeUHostInstance | Yes |
PublicKey | string | 用户公钥,可从 控制台 获取 | Yes |
Signature | string | 根据公钥及 API 指令生成的用户签名,参见 签名算法 | Yes |
通用参数
通用参数是大部分 API 都可能使用到的参数,具有一致的含义,是否需要给出,取决于具体 API 的定义。
参数名 | 类型 | 描述信息 |
---|---|---|
Region | string | 地域。 参见 地域和可用区列表 |
Zone | string | 可用区。参见 地域和可用区列表 |
ProjectId | string | 项目ID。不填写为默认项目,子帐号必须填写。 参见 获取项目 ID |
公共响应
公共响应是所有 API 都统一遵循的响应风格,包括一个指令响应名称(Action
),识别 API 是否成功的状态码(RetCode
)以及当遇到错误时,返回的错误提示信息(Message
)。
字段名 | 类型 | 描述信息 | 必填 |
---|---|---|---|
RetCode | int | 返回状态码,为 0 则为成功返回,非 0 为失败 | Yes |
Action | string | 操作指令名称 | Yes |
Message | string | 返回错误消息,当 RetCode 非 0 时提供详细的描述信息 | No |
错误码说明
RetCode | 描述 |
---|---|
110 | API 响应超时(60秒) |
130 | API 网关或者认证鉴权服务异常 |
150 | 服务目前不可用,我们正在努力恢复中,请稍后重试 |
153 | API 请求被限流 |
160 | 缺少关键参数 Action,请提供完整的参数 |
161 | Action 不存在 |
170 | 缺少签名 |
171 | 签名错误 |
172 | 用户不存在 |
174 | Token 不存在 |
292 | 项目不存在 |
293 | 可用区权限错误 |
294 | 访问 IP 被拒绝 |
295 | 安全锁验证失败 |
299 | IAM 权限校验未通过 |
快速开始
准备工作
- 获取 API 访问地址
- 从 UAPI 控制台 获取 API 密钥,包括
PublicKey
和PrivateKey
- 如果待操作资源属于某个地域下,获取地域和可用区列表
- 如果账号属于子账号,或需要操作某个特定项目,获取项目 ID
发起请求
您可以通过多种方式向 API 访问地址发起请求,包括 cURL 、Postman 等客户端。
我们的 API 支持 GET
/ POST
两种方法,支持 application/json
和 application/x-www-form-urlencoded
两种请求方式。
本文以 cURL POST JSON 为例,描述如何构造并发起一个 HTTP 请求。
数据假设
本例中假设
PublicKey = 'someone@example.com1296235120854146120'
PrivateKey = '46f09bb9fab4f12dfc160dae12273d5332b5debe'
假设用户请求参数如下:
{
"Action" : "DescribeUHostInstance",
"Region" : "cn-bj2",
"Limit" : 10
}
计算签名
可参考 签名算法 文档,计算出的 Signature
为 cba5cf5ec4d4233d206b1b54951e3787350a642f 。
构造请求
将 PublicKey
和 Signature
填入请求参数中,构造出的请求最终为:
curl -X POST \
https://api.an-link.com \
-H 'Content-Type: application/json' \
-d '{
"Action" : "DescribeUHostInstance",
"Limit" : 10,
"PublicKey" : "someone@example.com1296235120854146120",
"Region" : "cn-bj2",
"Signature" : "cba5cf5ec4d4233d206b1b54951e3787350a642f"
}'