

# 使用 REST API 客户端调用 API
<a name="api-as-s3-proxy-test-using-postman"></a>

为了提供端到端教程，我们现在演示如何使用支持AWS IAM 授权的 [Postman](https://www.postman.com/) 调用 API。<a name="api-as-s3-proxy-test-using-postman-steps"></a>

**使用 Postman 调用我们的 Amazon S3 代理 API**

1. 部署或重新部署 API。记下位于**阶段编辑器**顶部的**调用 URL** 旁边显示的 API 的基本 URL。

1. 启动 Postman。

1. 选择**授权**，然后选择 `AWS Signature`。分别在 **AccessKey** 和 **SecretKey** 输入字段中键入 IAM 用户的访问密钥 ID 和秘密访问密钥。在 **AWS 区域**文本框中输入将您的 API 部署到的 AWS 区域。在**服务名称**输入字段中输入 `execute-api`。

   您可以在 IAM 管理控制台的 IAM 用户账户的**安全凭证**选项卡中创建一对密钥。

1. 要在 `amzn-s3-demo-bucket` 区域内将名为 `{region}` 的存储桶添加到您的 Amazon S3 账户，请执行以下操作：

   1. 从下拉方法列表中选择 **PUT** 并键入方法 URL (`https://api-id.execute-api.aws-region.amazonaws.com/stage/folder-name`)

   1. 将 `Content-Type` 标头值设置为 `application/xml`。在设置内容类型之前，您可能需要先删除任何现有标头。

   1. 选择**正文**菜单项并键入以下 XML 片段作为请求正文：

      ```
      <CreateBucketConfiguration> 
        <LocationConstraint>{region}</LocationConstraint> 
      </CreateBucketConfiguration>
      ```

   1. 选择**发送**以提交请求。如果成功，您应该会收到一个负载为空的 `200 OK` 响应。

1. 要将文本文件添加到存储桶，请按照上述说明执行操作。如果您在 URL 中为 **amzn-s3-demo-bucket** 指定存储桶名称 `{folder}`，为 **Readme.txt** 指定文件名 `{item}`，并提供文本字符串 **Hello, World\$1** 作为文件内容（从而使其成为请求负载），则此请求将成为

   ```
   PUT /S3/amzn-s3-demo-bucket/Readme.txt HTTP/1.1
   Host: 9gn28ca086.execute-api.{region}.amazonaws.com
   Content-Type: application/xml
   X-Amz-Date: 20161015T062647Z
   Authorization: AWS4-HMAC-SHA256 Credential=access-key-id/20161015/{region}/execute-api/aws4_request, SignedHeaders=content-length;content-type;host;x-amz-date, Signature=ccadb877bdb0d395ca38cc47e18a0d76bb5eaf17007d11e40bf6fb63d28c705b
   Cache-Control: no-cache
   Postman-Token: 6135d315-9cc4-8af8-1757-90871d00847e
   
   Hello, World!
   ```

   如果一切正常，您应该会收到一个负载为空的 `200 OK` 响应。

1. 要获取我们刚刚添加到 `Readme.txt` 存储桶的 `amzn-s3-demo-bucket` 文件的内容，请发出类似于以下的 GET 请求：

   ```
   GET /S3/amzn-s3-demo-bucket/Readme.txt HTTP/1.1
   Host: 9gn28ca086.execute-api.{region}.amazonaws.com
   Content-Type: application/xml
   X-Amz-Date: 20161015T063759Z
   Authorization: AWS4-HMAC-SHA256 Credential=access-key-id/20161015/{region}/execute-api/aws4_request, SignedHeaders=content-type;host;x-amz-date, Signature=ba09b72b585acf0e578e6ad02555c00e24b420b59025bc7bb8d3f7aed1471339
   Cache-Control: no-cache
   Postman-Token: d60fcb59-d335-52f7-0025-5bd96928098a
   ```

   如果成功，您应该会收到负载为 `200 OK` 文本字符串的 `Hello, World!` 响应。

1. 要列出 `amzn-s3-demo-bucket` 存储桶中的项目，请提交以下请求：

   ```
   GET /S3/amzn-s3-demo-bucket HTTP/1.1
   Host: 9gn28ca086.execute-api.{region}.amazonaws.com
   Content-Type: application/xml
   X-Amz-Date: 20161015T064324Z
   Authorization: AWS4-HMAC-SHA256 Credential=access-key-id/20161015/{region}/execute-api/aws4_request, SignedHeaders=content-type;host;x-amz-date, Signature=4ac9bd4574a14e01568134fd16814534d9951649d3a22b3b0db9f1f5cd4dd0ac
   Cache-Control: no-cache
   Postman-Token: 9c43020a-966f-61e1-81af-4c49ad8d1392
   ```

   如果成功，您应该会收到 `200 OK` 响应且其 XML 负载在指定存储桶中显示单个项目，除非您在提交请求前将更多文件添加到存储桶中。

   ```
   <?xml version="1.0" encoding="UTF-8"?>
   <ListBucketResult xmlns="http://s3.amazonaws.com/doc/2006-03-01/">
       <Name>apig-demo-5</Name>
       <Prefix></Prefix>
       <Marker></Marker>
       <MaxKeys>1000</MaxKeys>
       <IsTruncated>false</IsTruncated>
       <Contents>
           <Key>Readme.txt</Key>
           <LastModified>2016-10-15T06:26:48.000Z</LastModified>
           <ETag>"65a8e27d8879283831b664bd8b7f0ad4"</ETag>
           <Size>13</Size>
           <Owner>
               <ID>06e4b09e9d...603addd12ee</ID>
               <DisplayName>user-name</DisplayName>
           </Owner>
           <StorageClass>STANDARD</StorageClass>
       </Contents>
   </ListBucketResult>
   ```

**注意**  
要上传或下载映像，您需要将内容处理设置为 CONVERT\$1TO\$1BINARY。