构造请求
本节介绍REST API请求的组成。
您还可以通过这个视频教程了解如何构造请求调用API:https://bbs.huaweicloud.com/videos/101580
请求URI
OBS根据桶和对象及携带的资源参数来确定具体的URI,当需要进行资源操作时,可以使用这个URI地址。
URI的一般格式为(方括号内为可选项):
protocol://[bucket.]domain[:port][/object][?param]
参数名称 |
参数类型 |
是否必选 |
描述 |
---|---|---|---|
protocol |
String |
必选 |
参数解释: 请求使用的协议类型。 约束限制: 不涉及 取值范围:
默认取值: 无 |
bucket |
String |
可选 |
参数解释: 桶名。 约束限制:
默认取值: 无 |
domain |
String |
必选 |
参数解释: 各区域的终端节点(Endpoint) 约束限制: 不涉及 取值范围: 各区域的终端节点详情请参见地区和终端节点。 默认取值: 不涉及 |
port |
String |
可选 |
参数解释: 请求使用的端口号。根据软件服务器的部署不同而不同。 约束限制: 不涉及 取值范围: OBS对象存储服务的HTTP方式访问端口为80,HTTPS方式访问端口为443。 默认取值: 缺省时使用默认端口,各种传输协议都有默认的端口号,如HTTP的默认端口为80,HTTPS的默认端口为443。 |
object |
String |
可选 |
参数解释: 对象名。对象名是对象在存储桶中的唯一标识。对象名是对象在桶中的完整路径,路径中不包含桶名。 例如,您对象的访问地址为examplebucket.obs.cn-north-4.myhuaweicloud.com/folder/test.txt 中,对象名为folder/test.txt。 取值范围: 长度大于0且不超过1024的字符串。 默认取值: 无 |
param |
String |
可选 |
参数解释: 请求使用的桶和对象的具体资源。 约束限制: 不涉及 取值范围: 不涉及 默认取值: 不设置默认为请求桶或对象自身资源。 |

除获取桶列表之外的所有接口,都应当包含桶名。OBS基于DNS解析性能和可靠性的考虑,要求凡是携带桶名的请求,在构造URL的时候都必须将桶名放在domain前面,形成三级域名形式,又称为虚拟主机访问域名。
例如,如果您有一个位于cn-north-4区域的名为test-bucket的桶,期望访问桶中一个名为test-object对象的acl,正确的访问URL为https://test-bucket.obs.cn-north-4.myhuaweicloud.com/test-object?acl
请求方法
HTTP方法(也称为操作或动词),它告诉服务您正在请求什么类型的操作。
方法 |
说明 |
---|---|
GET |
请求服务器返回指定资源,如获取桶列表、下载对象等。 |
PUT |
请求服务器更新指定资源,如创建桶、上传对象等。 |
POST |
请求服务器新增资源或执行特殊操作,如初始化上传段任务、合并段等。 |
DELETE |
请求服务器删除指定资源,如删除对象等。 |
HEAD |
请求服务器返回指定资源的概要,如获取对象元数据等。 |
OPTIONS |
请求服务器检查是否具有某个资源的操作权限,需要桶配置CORS。 |
请求消息头
可选的附加请求头字段,如指定的URI和HTTP方法所要求的字段。详细的公共请求消息头字段请参见表3。
消息头名称 |
参数类型 |
是否必选 |
描述 |
---|---|---|---|
Authorization |
String |
有条件必选 |
参数解释: 请求消息中可带的签名信息。 约束限制: 匿名请求不需要带,其他请求必选。 取值范围: 不涉及 默认取值: 不涉及 |
Content-Length |
String |
有条件必选 |
参数解释: 消息(不包含消息头)长度。 约束限制: PUT操作可选,加载XML的操作必须带。 取值范围: 不涉及 默认取值: 不涉及 |
Content-Type |
String |
否 |
参数解释: 资源内容的类型,例如: text/plain。 约束限制: 不涉及 取值范围: 常见的Content-Type类型参见常见的Content-Type类型。 默认取值: 如果上传对象时未携带该字段,下载对象时默认返回的Content-Type为binary/octet-stream。 |
Date |
String |
有条件必选 |
参数解释: 请求发起端的日期和时间,例如:Wed, 27 Jun 2018 13:39:15 +0000。 约束限制: 如果是匿名请求或者消息头中带了x-obs-date字段,则可以不带该字段,其他情况下必选。 取值范围: 不涉及 默认取值: 不涉及 |
Host |
String |
是 |
参数解释: 桶的访问域名,格式为桶名.终端节点,即BucketName.Endpoint 如examplebucketname.obs.cn-north-4.myhuaweicloud.com。 约束限制: 桶名的约束限制如下:
取值范围: 各区域的终端节点详情请参见地区和终端节点。 默认取值: 不涉及 |
请求消息体(可选)
请求消息体通常以结构化格式(如JSON或XML)发出,与请求消息头中Content-type对应,传递除请求消息头之外的内容。如果请求消息体中参数支持中文,则中文字符必须为UTF-8编码。
每个接口的请求消息体内容不同,也并不是每个接口都需要有请求消息体(或者说消息体为空),GET、DELETE操作类型的接口就不需要消息体,消息体具体内容需要根据具体接口而定。
发起请求
共有两种方式可以基于已构建好的请求消息发起请求,分别为:
- cURL
cURL是一个命令行工具,用来执行各种URL操作和信息传输。cURL充当的是HTTP客户端,可以发送HTTP请求给服务端,并接收响应消息。cURL适用于接口调试。关于cURL详细信息请参见https://curl.haxx.se/。由于cURL无法计算签名,使用cURL时仅支持访问匿名的公共OBS资源。
- 编码