概述
所有文档

          对象存储 BOS

          概述

          百度对象存储BOS(Baidu Object Storage),是百度智能云对外提供的稳定、安全、高效以及高扩展存储服务,支持文本、多媒体、二进制等任何类型的数据存储。数据多地域跨集群的存储,以实现资源统一利用,降低使用难度,提高工作效率。用户可以通过本文档提供的简单的RESTful API接口,进行资源管理以及数据上传下载等操作。

          API3.0介绍

          百度智能云API升级至API3.0,提供可视化的API调试界面,并能自动生成调用接口所需的代码,帮助开发者更高效地开展研发测试工作。 API3.0现已支持对象存储(BOS)、弹性公网IP(EIP)、数据传输服务(DTS)等产品,更多产品接入中,敬请期待。

          API3.0目前处于公测阶段,如果您对API3.0的文档、调试界面、代码样例等方面有任何建议,都可以通过文档反馈入口进行反馈。

          服务域名

          百度智能云开放了多区域支持,BOS支持的区域及对应域名请查看获取访问域名

          规范化字符串(UrlEncode)

          通常一个字符串中可以包含任何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

          说明: 下面这段sample代码以java为例演示如何进行UrlEncode。其中input为输入字符串,encodeSlash用来控制是否对"/"进行编码。在有些情况下,做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();
          }

          编码规范

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

            • Objectname,其中,Resource做UrlEncode的时候需要忽略“/”。
            • Querystring的Value。
            • x-bce-copy-source(忽略“/”)。
            • 自定义Meta:Meta Value只支持可见的ASCII字符,如果需要其它的字符,推荐使用UrlEncode处理。

          请求语法风格

          BOS API的请求语法支持不带“/v{version}/”的风格,也兼容“/v{version}/”的风格。以GetObject为例,下述两种写法的API调用方式都是正确的。

          • 不带/v{version}/的请求语法:GET /object HTTP/1.1
          • 带/v{version}/的请求语法:GET /v1/bucket/object HTTP/1.1

          资源数目及大小规范

          • 用户可有的Bucket数目100。如果需要更多bucket,可以通过工单系统申请。
          • Bucket中的Object数不限。
          • 支持单个Object最大为5TB。
          • 用户请求Header大小不得超过8KB。其中用户自定义Meta(x-bce-meta-)不得超过2KB;Meta值不能为空,且只支持ASCII格式。

          命名规范

          Bucket格式要求:

          • 只能包括小写字母,数字和连字符“-”。
          • Bucket名开头和结尾必须是小写字母或数字。
          • 长度为3~63位。

          Object格式要求:长度不能超过1024个字节的UTF-8字符。

          日期与时间

          日期与时间的表示有多种方式。为统一起见,除非是约定俗成或者有相应规范的,凡是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秒。
          上一篇
          SDK
          下一篇
          如何调用API