对象存储BOS

    简介

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

    如果您是初次调用百度智能云产品的API,可以观看API入门视频指南,快速掌握调用API的方法。

    服务域名

    百度智能云开放了多区域支持,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秒。
    上一篇
    数据处理
    下一篇
    接口规范