

# 使用 REST API 提出请求
<a name="RESTAPI"></a>

本节介绍如何使用 REST API 向 Amazon S3 终端节点发出请求。有关 Amazon S3 端点的列表，请参阅《Amazon Web Services 一般参考》**中的[区域和端点](https://docs.amazonaws.cn/general/latest/gr/s3.html)。

## 为 REST API 请求构建 S3 主机名
<a name="constructing-hostname-rest-api-requests"></a>

Amazon S3 终端节点遵循如下所示的结构：

```
s3.{{Region}}.amazonaws.com
```

Amazon S3 访问点终端节点和双堆栈终端节点也遵循标准结构：
+ **Amazon S3 访问点** ‐`s3-accesspoint.{{Region}}.amazonaws.com`
+ **双堆栈** – `s3.dualstack.{{Region}}.amazonaws.com` 

有关 Amazon S3 区域和端点的完整列表，请参阅《Amazon Web Services 一般参考》**中的 [Amazon S3 端点和限额](https://docs.amazonaws.cn/general/latest/gr/s3.html)。

## 虚拟托管类型和路径类型请求
<a name="virtual-hosted-path-style-requests"></a>

在使用 REST API 发出请求时，您可以使用 Amazon S3 终端节点的虚拟托管类型或路径类型 URI。有关更多信息，请参阅[路径类型请求](https://docs.amazonaws.cn//AmazonS3/latest/userguide/VirtualHosting.html#path-style-access)。

**Example 虚拟托管类型请求**  
下面是要求从美国西部（俄勒冈）区域中名为 `puppy.jpg` 的存储桶删除 `examplebucket` 文件的虚拟托管类型请求的示例。有关虚拟托管类型请求的更多信息，请参阅[路径类型请求](https://docs.amazonaws.cn//AmazonS3/latest/userguide/VirtualHosting.html#virtual-hosted-style-access)。  

```
1. DELETE /puppy.jpg HTTP/1.1
2. Host: examplebucket.s3.us-west-2.amazonaws.com
3. Date: Mon, 11 Apr 2016 12:00:00 GMT
4. x-amz-date: Mon, 11 Apr 2016 12:00:00 GMT
5. Authorization: {{authorization string}}
```

**Example 路径类型请求**  
下面是同一请求的路径类型版本示例。  

```
1. DELETE /examplebucket/puppy.jpg HTTP/1.1
2. Host: s3.us-west-2.amazonaws.com
3. Date: Mon, 11 Apr 2016 12:00:00 GMT
4. x-amz-date: Mon, 11 Apr 2016 12:00:00 GMT
5. Authorization: {{authorization string}}
```
目前，Amazon S3 在所有 Amazon Web Services 区域中同时支持虚拟托管类型和路径类型 URL 访问。但是，路径类型 URL 将来会停用。有关更多信息，请参阅下面的**重要**提示。  
有关路径类型请求的更多信息，请参阅[路径类型请求](https://docs.amazonaws.cn//AmazonS3/latest/userguide/VirtualHosting.html#path-style-access)。  
更新（2020 年 9 月 23 日）– 为确保客户有时间转换到虚拟托管类型 URL，我们决定推迟弃用路径类型 URL。有关更多信息，请参阅 *Amazon 新闻博客*中的 [Amazon S3 路径弃用计划 – 案例的其余部分](https://www.amazonaws.cn/blogs/aws/amazon-s3-path-deprecation-plan-the-rest-of-the-story/)。

## 通过使用 REST API 向双堆栈终端节点发出请求
<a name="rest-api-dual-stack"></a>

在使用 REST API 时，您可以通过使用虚拟托管类型或路径类型终端节点名称 (URI) 直接访问双堆栈终端节点。所有 Amazon S3 双堆栈终端节点名称中都包含区域。与标准的仅支持 IPv4 的终端节点不同，虚拟托管类型和路径类型终端节点都使用特定于区域的终端节点名称。

**Example 虚拟托管类型双堆栈终端节点请求**  
如下例所示，您可以在 REST 请求中使用虚拟托管类型终端节点，该示例从美国西部（俄勒冈）区域中名为 `puppy.jpg` 的存储桶检索 `examplebucket` 对象。  

```
1. GET /puppy.jpg HTTP/1.1
2. Host: examplebucket.s3.dualstack.us-west-2.amazonaws.com
3. Date: Mon, 11 Apr 2016 12:00:00 GMT
4. x-amz-date: Mon, 11 Apr 2016 12:00:00 GMT
5. Authorization: {{authorization string}}
```

**Example 路径类型双堆栈终端节点请求**  
如下例所示，您也可以在请求中使用路径类型终端节点。  

```
1. GET /examplebucket/puppy.jpg HTTP/1.1
2. Host: s3.dualstack.us-west-2.amazonaws.com
3. Date: Mon, 11 Apr 2016 12:00:00 GMT
4. x-amz-date: Mon, 11 Apr 2016 12:00:00 GMT
5. Authorization: {{authorization string}}
```

有关双堆栈终端节点的更多信息，请参阅[使用 Amazon S3 双堆栈端点](dual-stack-endpoints.md)。

有关如何使用 REST API 发出请求的更多信息，请参阅以下主题。

**Topics**
+ [为 REST API 请求构建 S3 主机名](#constructing-hostname-rest-api-requests)
+ [虚拟托管类型和路径类型请求](#virtual-hosted-path-style-requests)
+ [通过使用 REST API 向双堆栈终端节点发出请求](#rest-api-dual-stack)
+ [请求重定向和 REST API](RESTRedirect.md)
+ [请求路由选择](UsingRouting.md)