调用说明
所有文档
menu

动态加速 DRCDN

调用说明

产品详情立即开通

一、概述

百度智能云的 DRCDN 的 API 接口域名 http://cdn.baidubce.com ,所有接口统一使用 /v2 前缀,接口规范遵循 BCE 标准,采用HTTP协议通信,支持 HTTP 1.0/1.1 。支持 HTTP 的 PUT、POST、GET、DELETE 请求方法。

二、通用约定

1、编码及数据格式

数据交换格式使用 JSON 格式,Content-Type 为 applicaton/json 样式,所有 request/response body 内容均使用 UTF-8 编码。

2、日期与时间

日期与时间的表示有多种方式。为统一起见,除非是约定俗成或者有相应规范的,凡是 HTTP 标准中规定的表示日期和时间字段用 GMT ,其他日期时间表示的地方一律采用 UTC 时间,遵循 ISO 8601,并做以下约束:

  • 表示日期一律采用 YYYY-MM-DD 方式,例如 2014-06-01 表示 2014 年 6 月 1 日。
  • 表示时间一律采用 hh:mm:ss 方式,并在最后加一个大写字母 Z 表示 UTC 时间。例如 23:00:10Z 表示 UTC 时间 23 点 0 分 10 秒。
  • 凡涉及日期和时间合并表示时,在两者中间加大写字母 T ,例如 2014-06-01T23:00:10Z 表示 UTC 时间 2014 年 6 月 1 日 23 点 0 分 10 秒。

API 与时间相关的数值类型统一采用上述格式,称为 Timestamp 类型。

3、规范化字符串

通常一个字符串中可以包含任何 Unicode 字符。在编程中这种灵活性会带来不少困扰。因此引入“规范字符串”的概念。一个规范字符串只包含百分号编码字符以及 URI(Uniform Resource Identifier)非保留字符(Unreserved Characters)。 RFC 3986 规定 URI 非保留字符包括以下字符:字母(A-Z,a-z)、数字(0-9)、连字号(-)、点号(.)、下划线(_)、波浪线(~)。 将任意一个字符串转换为规范字符串的方式是:

  • 将字符串转换成 UTF-8 编码的字节流。
  • 保留所有 URI 非保留字符原样不变。
  • 对其余字节做一次 RFC 3986 中规定的百分号编码(Percent-Encoding),即一个 % 后面跟着两个表示该字节值的十六进制字母。字母一律采用大写形式。 示例: 原字符串:this is an example for 测试 对应的规范字符串:this%20is%20an%20example%20for%20%E6%B5%8B%E8%AF%95

在请求时,需要对 Querystring 的 Value 做 UrlEncode ,如下所示:

public static String uri-encode(CharSequence input, boolean encodeSlash) {
          StringBuilder result = new StringBuilder()
          for (int i = 0; i < input.length(); i++) {
              char ch = input.charAt(i);
              if ((ch >= 'A' && ch <= 'Z') || (ch >= 'a' && ch <= 'z') || (ch >= '0' && ch <= '9') || ch == '_' || ch == '-' || ch == '~' || ch == '.') {
                  result.append(ch)
              } else if (ch == '/') {
                  result.append(encodeSlash ? "%2F" : ch)
              } else {
                  result.append(toHexUTF8(ch))
              }
          }
          return result.toString()
}

4、编码规范

  • 可解析内容,所有 request/response body 内容目前均使用 UTF-8 编码,后续会支持更多 encoding 类型。
  • 在请求时,需要对 QueryString 的 Value 做 UrlEncode 。

三、签名认证(自行封装)

API 服务会对每个访问的请求进行身份认证,以保障用户的安全。安全认证采用 Access Key 与请求签名机制。Access Key 由 Access Key ID(简称 AK )和 Secret Access Key(简称 SK )组成,均为字符串,由百度智能云官方颁发给用户。其中 Access Key ID 用于标识用户身份,Secret Access Key 是用于加密签名字符串和服务器端验证签名字符串的密钥,必须严格保密。

1、签名字符串格式

bce-auth-v{version}/{accessKeyId}/{timestamp}/{expireTime}/{signedHeaders}/{signature}

2、签名申请步骤

关于 AK/SK 的获取,请参看 获取 AK/SK

3、签名生成算法

百度智能云采用统一的API鉴权认证机制,详情请见 鉴权认证机制

四、签名认证(使用 SDK ,推荐方式)

我们推荐您直接使用签名的 SDK 来计算签名鉴权,然后基于 API 接口文档来集成接口功能。

以 Python SDK 为例,详见:Python SDK 推荐的使用方式

五、公共头

1、公共请求头域

API 服务需要在请求的 HTTP 头域中包含以下信息:

头域(Header) 说明 是否必须
host http host
Authorization 包含 Access Key 与请求签名
x-bce-date 该请求创建的时间,表示日期一律采用 YYYY-MM-DD 方式,例如 2014-06-01 表示 2014 年 6 月 1 日。如果用户使用了标准的 Date 域,该头域可以不填。当两者同时存在时,以 x-bce-date 为准。
x-bce-content-sha256 表示内容部分的 SHA256 签名的十六进制字符串,其中内容指 HTTP Request Payload Body ,即 Content 部分在被 HTTP encode 之前的原始数据。
x-bce-request-id 用来跟踪调试的 Id ,为一个 uuid 字符

2、公共响应头域

头域(Header) 说明
x-bce-request-id 对应请求的 requestId
Content-Type application/json,charset=utf-8。一期编码只支持 utf-8 ,所以 charset 是固定的。

六、错误信息格式

API 的错误信息除了 HTTP 状态码以外,在 HTTP body 中还包 JSON 格式的错误信息,内容如下:

参数名 类型 说明
requestId String 导致该错误的 requestId
code String 表示具体错误类型
message String 有关该错误的详细说明

例如:

{ 
    "code":"IllegalRequestUrl", 
    "message":"The requested url belongs to domain which is not under acceleration",
    "requestId":" 81d0b05f-5ad4-1f22-8068-d5c9de60a1d7" 
}

七、通用错误码

除了后面各个接口单独列出的错误格式定义以外,API 的通用错误码还包含但不限于以下形式:

HTTP Status Code Code Message 说明
400 InvalidArgument Invalid Argument. 无效参数
400 InvalidHTTPAuthHeader The HTTP authorization header is invalid. Consult the service documentation for details. Authorization 头域格式错误
400 InvalidHTTPRequest There was an error in the body of your HTTP request. HTTP body 格式错误。例如不符合指定的 Encoding 等
400 MalformedJSON The JSON you provided was not well-formed. JSON 格式不合法
403 SignatureDoesNotMatch The request signature we calculated does not match the signature you provided. Check your Secret Access Key and signing method. Consult the service documentation for details. Authorization 头域中附带的签名和服务端验证不一致
403 InvalidAccessKeyId The Access Key ID you provided does not exist in our records. Access Key ID 不存在
405 MethodNotAllowed he specified method is not allowed against this resource. 请求的方法不允许
500 InternalError We encountered an internal error. Please try again. 未定义的系统错误

八、省份、运营商格式

地区 映射 运营商 映射
北京 beijing 电信 ct
天津 tianjin 联通 cnc
河北 hebei 移动 cmnet
内蒙古 nmg 教育网 ce
山西 shanxi 鹏博士 pbs
上海 shanghai 广电 oc
安徽 anhui 世纪互联 sjhl
江苏 jiangsu 方正宽带 fdbn
浙江 zhejiang 华数 wasu
山东 shandong 其他 other
福建 fujian
江西 jiangxi
广东 guangdong
广西 guangxi
海南 hainan
河南 henan
湖北 hubei
湖南 hunan
黑龙江 hlj
吉林 jilin
辽宁 liaoning
陕西 shaanxi
甘肃 gansu
宁夏 ningxia
青海 qinghai
新疆 xinjiang
重庆 chongqing
四川 sichuan
云南 yunnan
贵州 guizhou
西藏 xizang
海外 oversea
其他 other
上一篇
操作指南
下一篇
域名操作接口