

# 使用 API Gateway 控制台启用二进制支持
<a name="api-gateway-payload-encodings-configure-with-console"></a>

本节说明如何使用 API Gateway 控制台启用二进制支持。例如，我们使用一个与 Amazon S3 集成的 API。我们的任务重点是设置受支持的媒体类型并指定如何处理负载。有关如何创建与 Amazon S3 集成的 API 的详细信息，请参阅[教程：创建 REST API 作为 Amazon S3 代理](integrating-api-with-aws-services-s3.md)。

**使用 API Gateway 控制台启用二进制支持**

1. 设置 API 的二进制媒体类型：

   1. 创建新 API 或选择现有 API。在本例中，我们将 API 命名为 `FileMan`。

   1. 在主导航面板中所选的 API 之下，选择 **API 设置**。

   1. 在 **API 设置**窗格中的**二进制媒体类型**部分，选择**管理媒体类型**。

   1. 选择**添加二进制媒体类型**。

   1. 在文本输入字段中输入所需的媒体类型，例如 **image/png**。如果需要，请重复此步骤，添加更多媒体类型。要支持所有二进制媒体类型，请指定 `*/*`。

   1. 选择**保存更改**。

1. 设置如何针对 API 方法处理消息负载：

   1. 创建新资源或选择 API 中的现有资源。在本例中，我们使用 `/{folder}/{item}` 资源。

   1. 对该资源创建新方法或选择一个现有方法。例如，我们使用与 Amazon S3 中的 `GET /{folder}/{item}` 操作集成的 `Object GET` 方法。

   1. 对于**内容处理**，选择一个选项。

       

      如果不想在客户端和后端接受相同的二进制格式时转换正文，则选择**传递**。当存在后端要求将二进制请求负载作为 JSON 属性传入等情况时，选择**转换为文本**以将二进制正文转换为 Base64 编码的字符串。当客户端提交 Base64 编码的字符串且后端需要原始二进制格式，或者当端点返回 Base64 编码的字符串且客户端只接受二进制输出时，选择**转换为二进制**。

   1. 对于**请求正文传递**，选择**当未定义模板时（推荐）**，以在请求正文上启用传递行为。

      您也可以选择**从不**。这意味着 API 将拒绝其内容类型没有映射模板的数据。

   1. 在集成请求中保留传入请求的 `Accept` 标头。如果您已将 `contentHandling` 设置为 `passthrough` 并且希望在运行时覆盖该设置，则应执行此操作。

       

   1. 转换为文本时，请定义映射模板，以将 Base64 编码的二进制数据转换为所需格式。

      以下是用于转换为文本的映射模板的示例：

      ```
      {
        "operation": "thumbnail",
        "base64Image": "$input.body"
      }
      ```

      此映射模板的格式取决于输入的端点要求。

   1. 选择**保存**。