1. 创建请求
对象存储服务提供的是一组RESTful风格的API接口,可以使用REST API开发自有应用程序。目前,系统提供的REST接口支持认证请求,即使用场景需要经过认证的请求才可以访问成功。经过认证的请求总是需要包含一个签名值,该签名值以请求者的访问密钥作为加密因子、结合请求体携带的特定信息计算而成。
通过REST API自行开发程序进行对接,需要按照对象存储服务定义的签名算法来计算签名并添加到请求中。
创建请求的步骤如下:
1、获取访问密钥(AccessKey)
请参阅访问控制模块下的获取API访问密钥文档说明。
2、获取访问域名(Endpoint)
各区域与终端节点信息,请参考 可用地域 文档说明 。
3、构造请求方法
使用REST API接口创建请求方法如下:
1) 构造HTTP请求
一个HTTP请求由四部分构成,请求方法、请求URL、请求头、请求体。
- 支持的请求方法:
请求方法 | 说明 |
---|---|
GET | 请求服务器返回指定资源,如获取桶列表、下载对象等。 |
PUT | 请求服务器存储指定资源,如创建桶、上传对象等。 |
POST | 请求服务器存储特殊的资源或执行特殊操作,如初始化上传段任务、合并段等。 |
DELETE | 请求服务器删除指定资源,如删除对象等。 |
HEAD | 请求服务器返回指定资源的概要,如获取对象元数据等。 |
OPTIONS | 请求服务器检查是否具有某个资源的操作权限,需要桶配置CORS。 |
- 请求URL
请求URL构成:
<schema>://<bucketname>.<endpoint>/<objectname>?querystrings
schema:http或https
bucketname:Bucket的名称
endpoint:Bucket所在区域的终端域名
objectname:文件名称
示例:
如果您有一个位于华东一区的Bucket名为testBucket001,需要访问其中一个文件名为testobject对象的acl,华东一区endpoint为cn-east-1.cloud-oss.com,则正确的访问url为:
https://testBucket001.cn-east-1.cloud-oss.com/testobject?acl
- 请求头
对象存储服务使用的HTTP头包括 HTTP标准头和自定义元数据。
支持参数与相关说明,请参阅 对象概述 文档中的“对象元数据(Metadata)”说明。
- 请求体
不是所有接口都需要携带请求体,一般只有PUT、POST方法定义的接口需要携带。对象存储服务的REST API接口定义的请求体一般是XML、JSON、或二进制数据,具体每个接口的差异请参阅API文档的说明。
2)为请求添加签名
为请求添加签名的三种形式:
形式 | 说明 |
在头域中包含签名 | 在头域中包含签名是最常见的情况,这种方式需要在HTTP请求头域中添加一个认证头域,示例如下: Authorization: OBS HCY8BGCN1YM5ZWYOK1MH:51KOKYY9CVvk/DtUt4W8aFHvfsc= |
在URL中包含签名 | 在URL的querystring中包含签名,一般用于限时分享链接的场景,示例如下: https://bucketname.obs.cn-north-1.myhwclouds.com/objectname?AccessKeyId=HCY8BGCN1YM5ZWYOK1MH&Expires=1528857302&Signature=OgynyFAkBRU6FUHkEqsMVsPolok= |
在POST表单中包含签名 | 在POST表单中包含签名,一般用于浏览器上传的场景,示例如下: ------WebKitFormBoundaryx4WluntRxFeG3GAD Content-Disposition: form-data; name="AccessKeyId" HCY8BGCN1YM5ZWYOK1MH ------WebKitFormBoundaryx4WluntRxFeG3GAD Content-Disposition: form-data; name="signature" Bpj82MEqa23d7GEot7LCqJY8Zdg= |
详细计算签名的方式,请参阅API接口说明中 计算请求签名 文档说明。