

# 设置具有代理资源的代理集成
设置具有代理资源的代理集成

要在 API Gateway API 中设置具有[代理资源](api-gateway-method-settings-method-request.md#api-gateway-proxy-resource)的代理集成，您需要执行以下任务：
+ 创建一个“贪婪”路径变量为 `{proxy+}` 的代理资源。
+ 在代理资源上设置 `ANY` 方法。
+ 使用 HTTP 或 Lambda 集成类型将资源和方法与后端相集成。

**注意**  
“贪婪”路径变量、`ANY` 方法和代理集成类型通常结合使用，但它们都是独立的功能。您可以在“贪婪”资源上配置特定 HTTP 方法，也可以将非代理集成类型应用于代理资源。

在通过 Lambda 代理集成或 HTTP 代理集成处理方法时，API Gateway 存在某些限制。有关详细信息，请参阅[Amazon API Gateway 重要说明](api-gateway-known-issues.md)。

**注意**  
 将代理集成与传递搭配使用时，如果未指定负载的内容类型，则 API Gateway 将返回默认的 `Content-Type:application/json` 标头。

使用以下 HTTP 代理集成或 Lambda 代理[集成](https://docs.amazonaws.cn/apigateway/latest/api/API_Integration.html)将代理资源与后端集成时，该代理资源的功能最为强大。

## 具有代理资源的 HTTP 代理集成


HTTP 代理集成，在 API Gateway REST API 中由 `HTTP_PROXY` 指定，用于将方法请求与后端 HTTP 终端节点集成。使用此集成类型，API Gateway 只需遵守特定[限制](api-gateway-known-issues.md)在前端和后端之间传递整个请求和响应。

**注意**  
HTTP 代理集成支持多值标头和查询字符串。

将 HTTP 代理集成用于代理资源时，您可以设置 API 来公开采用单个集成设置的 HTTP 后端的部分或整个终端节点层次结构。例如，假设将网站后端组织成多个脱离根节点 (`/site`) 的树节点的多个分支，如 `/site/a0/a1/.../aN`、`/site/b0/b1/.../bM` 等。如果将 `ANY` 的代理资源上的 `/api/{proxy+}` 方法与 URL 路径为 `/site/{proxy}` 的后端终端节点集成，则单个集成请求可以支持任何 HTTP 操作（GET、POST 等），在任何 `[a0, a1, ..., aN, b0, b1, ...bM, ...]` 上都如此。如果您将代理集成应用于特定的 HTTP 方法（如 `GET`），则生成的集成请求将与任何后端节点上的指定（即 `GET`）操作配合发挥作用。

## 具有代理资源的 Lambda 代理集成


Lambda 代理集成，在 API Gateway REST API 中由 `AWS_PROXY` 指定，用于将方法请求与后端中的 Lambda 函数集成。使用这种集成类型，API Gateway 会应用默认映射模板将整个请求发送到 Lambda 函数，并将 Lambda 函数的输出转换为 HTTP 响应。

同样，您可以将 Lambda 代理集成应用于 `/api/{proxy+}` 的代理资源以设置单个集成，从而让后端 Lambda 函数单独响应 `/api` 下任何 API 资源的更改。