通用说明
API调用遵循HTTP协议,各Region采用不同的域名,具体域名为bts.{region}.baidubce.com。 数据交换格式为JSON,所有request/response body内容均采用UTF-8编码。
实名认证
使用TableStorage API的用户需要实名认证,没有通过实名认证的可以前往百度智能云官网控制台中的安全认证下的实名认证中进行认证。
百度智能云提供个人认证、企业认证两种认证方式,您可以根据实际情况选择一种进行认证。
API认证机制
所有API的安全认证一律采用Access Key与请求签名机制。 Access Key由Access Key ID和Secret Access Key组成,均为字符串。 对于每个HTTP请求,使用下面所描述的算法生成一个认证字符串。提交认证字符串放在Authorization头域里。服务端根据生成算法验证认证字符串的正确性。 认证字符串的格式为bce-auth-v{version}/{accessKeyId}/{timestamp}/{expirationPeriodInSeconds}/{signedHeaders}/{signature}
。
- version是正整数。
- timestamp是生成签名时的UTC时间。
- expirationPeriodInSeconds表示签名有效期限。
- signedHeaders是签名算法中涉及到的头域列表。头域名之间用分号(;)分隔,如host;x-bce-date。列表按照字典序排列。(本API签名仅使用host和x-bce-date两个header)
- signature是256位签名的十六进制表示,由64个小写字母组成。
当百度智能云接收到用户的请求后,系统将使用相同的SK和同样的认证机制生成认证字符串,并与用户请求中包含的认证字符串进行比对。如果认证字符串相同,系统认为用户拥有指定的操作权限,并执行相关操作;如果认证字符串不同,系统将忽略该操作并返回错误码。
鉴权认证机制的详细内容请参见鉴权认证机制。
通信协议
TableStorage API支持HTTP和HTTPS两种调用方式。为了提升数据的安全性,建议通过HTTPS调用。
请求结构说明
请求结构中包括的组成说明:
参数类型 | 说明 |
---|---|
URI | 通常用于指明操作实体,如:PUT /v1/instance/{instanceName} |
Query String | URL中携带的请求参数 |
Header | 通过HTTP头域传入,如x-bce-date |
Request Body | 通过JSON格式组织的请求数据体 |
响应结构说明
响应值分为两种形式:
返回内容 | 说明 |
---|---|
HTTP Status Code | 如200,400,403,404等 |
Response Body | JSON格式组织的响应数据体 |
公共请求头
Header | 必须 | 说明 |
---|---|---|
Authorization | 是 | 认证相关bce-auth-v{version}/{accessKeyId}/{timestamp}/{expirationPeriodInSeconds}/{signedHeaders}/{signature} |
Host | 是 | 固定bts.{region}.baidubce.com |
Content-Type | 是 | 固定为application/json |
Content-Length | 是 | 实际请求body大小 |
x-bce-date | 否 | 表示日期的字符串,如果用户使用了标准的Date域,该头域可以不填。当两者同时存在时,以x-bce-date为准。 统一使用UTC时间,日期和时间之间加字母T,结尾加字母Z表示UTC时间,如:2014-06-01T23:00:10Z。 服务端收到请求会判断本机时间与该时间差值,若大于30分钟,则抛弃本次请求,响应InvalidDate。 |
Date | 否 | 同x-bce-date头,二者必须存在其一 |
x-bce-if-none-match | 否 | 与ETag配合使用实现缓存,同HTTP标准If-None-Match语义 |
x-bce-if-match | 否 | 与ETag配合使用实现缓存,同HTTP标准If-Match语义 |
公共响应头
Header | 必须 | 说明 |
---|---|---|
Content-Type | 是 | 固定application/json; charset=utf-8 |
Content-Length | 是 | 返回body大小 |
ETag | 否 | 与x-bce-if-match/x-bce-if-none-match配合使用实现缓存 |
x-bce-request-id | 是 | 对应请求的requestId,由服务端生成,反馈问题或提工单时需提供 |
API版本说明
直接定义在URL path中的首位,形如/v{version},如/v1
资源层级
层级 | 资源 |
---|---|
1 | Instance |
2 | Table |
3 | Row |
功能映射
Verb | Path | Description |
---|---|---|
GET | /v{version}/instances | ListInstances,列出该账户下创建的所有实例 |
GET | /v{version}/instance/{instanceName} | ShowInstance,显示该实例的详细信息 |
GET | /v{version}/instance/{instanceName}/tables | ListTables,列出该实例下所有的Table |
GET | /v{version}/instance/{instanceName}/table/{tableName} | ShowTable,显示该Table的详细信息 |
GET | /v{version}/instance/{instanceName}/table/{tableName}/rows | BatchGetRow/Scan,批量读取或范围扫描若干行数据 |
GET | /v{version}/instance/{instanceName}/table/{tableName}/row/{rowkey} | GetRow,读取具体某一行数据 |
PUT | /v{version}/instance/{instanceName} | CreateInstance,创建一个实例 |
PUT | /v{version}/instance/{instanceName}/table/{tableName} | CreateTable/UpdateTable,在指定的Instance下创建一张表,或更新所指定的表 |
PUT | /v{version}/instance/{instanceName}/table/{tableName}/row/{rowkey} | PutRow, 向指定的表中写入一行数据 |
PUT | /v{version}/instance/{instanceName}/table/{tableName}/rows | BatchPutRow, 批量写入若干行数据 |
DELETE | /v{version}/instance/{instanceName} | DropInstance,删除一个实例 |
DELETE | /v{version}/instance/{instanceName}/table/{tableName} | DropTable,删除一张表 |
DELETE | /v{version}/instance/{instanceName}/table/{tableName}/row/{rowkey} | DeleteRow, 删除某个表中指定的一行,可在body中指定要删除的属性列 |
DELETE | /v{version}/instance/{instanceName}/table/{tableName}/rows | BatchDeleteRow, 批量删除若干行数据,可在body中指定要删除的属性列 |
说明
- URL路径中任意分隔符“/”支持任意数量连续,如/v1///instance等价于/v1/instance。
- URL路径中结尾的“/”,可有可无,即/v1/instance/等价于/v1/instance。