
# 构造请求
本节介绍REST API请求的组成。
#### 请求URI
SFS根据通用文件系统及携带的资源参数来确定具体的URI，当需要进行资源操作时，可以使用这个URI地址。
URI的一般格式为（方括号内为可选项）：
**protocol://**\[filesystem** .**\]**domain\[:port\]/\[?param\]**
表1URI中的参数 
| 参数         | 描述                                                                                                                                                                         | 是否必选 |
|:---|:---|:---|
| protocol   | 请求使用的协议类型，如HTTP、HTTPS。HTTPS表示通过安全的HTTPS访问该资源，SFS服务支持HTTP，HTTPS两种传输协议。                                                                                                      | 必选   |
| filesystem | 请求使用的通用文件系统资源路径，在整个系统中唯一标识一个通用文件系统。                                                                                                                                        | 可选   |
| domain     | 存放资源的服务器的域名或IP地址。                                                                                                                                                          | 必选   |
| port       | 请求使用的端口号。根据软件服务器的部署不同而不同。缺省时使用默认端口，各种传输协议都有默认的端口号，如HTTP的默认端口为80，HTTPS的默认端口为443。 SFS服务的http方式访问端口为80，HTTPS方式访问端口为443。 | 可选   |
| param      | 请求使用的通用文件系统的具体资源，缺省为请求通用文件系统自身资源。                                                                                                                                          | 可选   |
   
![](https://support.huaweicloud.com/api-sfs/public_sys-resources/notice_3.0-zh-cn.png)
除获取通用文件系统列表之外的所有接口，都应当包含通用文件系统名。SFS基于DNS解析性能和可靠性的考虑，要求凡是携带通用文件系统名的请求，在构造URL的时候都必须将通用文件系统名放在domain前面，形成三级域名形式，又称为虚拟主机访问域名。
例如，如果您有一个位于cn-north-4区域的名为test-filesystem的通用文件系统，期望访问通用文件系统的acl，正确的访问URL为https://test-filesystem.sfs3.cn-north-4.myhuaweicloud.com/?sfsacl
#### 请求方法
HTTP方法（也称为操作或动词），它告诉服务你正在请求什么类型的操作。
表2SFS支持的REST请求方法 
| 方法      | 说明                        |
|:---|:---|
| GET     | 请求服务器返回指定资源，如获取通用文件系统列表等。 |
| PUT     | 请求服务器更新指定资源，如创建通用文件系统等。   |
| POST    | 请求服务器新增资源或执行特殊操作。         |
| DELETE  | 请求服务器删除指定资源，如删除通用文件系统等。   |
| HEAD    | 请求服务器返回指定资源的概要。           |
| OPTIONS | 请求服务器检查是否具有某个资源的操作权限。     |
   
#### 请求消息头
可选的附加请求头字段，如指定的URI和HTTP方法所要求的字段。详细的公共请求消息头字段请参见[表3]。
 表3公共请求消息头 
| 消息头名称          | 描述                                                                                                                                                                                                                                                                          | 是否必选  |
|:---|:---|:---|
| Authorization  | 请求消息中可带的签名信息。 类型：字符串。 默认值：无。                                                                                                                                    | 必选    |
| Content-Length | RFC 2616中定义的消息（不包含消息头）长度。 类型：字符串。 默认值：无。 条件：PUT操作和加载XML的操作必须带。                                               | 有条件必选 |
| Content-Type   | 资源内容的类型，例如： text/plain。 类型：字符串。 默认值：无。                                                                                                                          | 否     |
| Date           | 请求发起端的日期和时间，例如：Wed, 27 Jun 2018 13:39:15 +0000。 类型：字符串。 默认值：无。 条件：如果是消息头中带了x-obs-date字段，则可以不带该字段，其他情况下必选。 | 有条件必选 |
| Host           | 表明主机地址。如filesystem.sfs3.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时仅支持访问匿名的公共SFS资源。
  
- 编码 通过编码调用接口，组装请求消息，并发送处理请求消息。可以自行编码实现。
  
 
