选择您的 Cookie 首选项

我们使用必要 Cookie 和类似工具提供我们的网站和服务。我们使用性能 Cookie 收集匿名统计数据,以便我们可以了解客户如何使用我们的网站并进行改进。必要 Cookie 无法停用,但您可以单击“自定义”或“拒绝”来拒绝性能 Cookie。

如果您同意,AWS 和经批准的第三方还将使用 Cookie 提供有用的网站功能、记住您的首选项并显示相关内容,包括相关广告。要接受或拒绝所有非必要 Cookie,请单击“接受”或“拒绝”。要做出更详细的选择,请单击“自定义”。

针对 API Gateway 中的 HTTP API 转换 API 请求和响应

聚焦模式
针对 API Gateway 中的 HTTP API 转换 API 请求和响应 - Amazon API Gateway

您可以在客户端 API 请求到达后端集成之前修改它们。您还可以在 API Gateway 将响应返回给客户端之前更改集成的响应。您可以使用参数映射修改 HTTP API 的 API 请求和响应。要使用参数映射,您需要指定要修改的 API 请求或响应参数,并指定如何修改这些参数。

转换 API 请求

在请求到达后端集成之前,您可以使用请求参数更改请求。您可以修改标头、查询字符串或请求路径。

请求参数是键值映射。键用于标识要更改的请求参数的位置以及如何更改它。值指定参数的新数据。

下表显示了支持的键。

类型 语法
标头 append|overwrite|remove:header.headername
查询字符串 append|overwrite|remove:querystring.querystring-name
路径 overwrite:path

下表显示了可以映射到参数的支持值。

类型 语法 备注
标头值 $request.header.name 或 ${request.header.name} 标头名称不区分大小写。API Gateway 将多个标头值与逗号组合在一起,例如 "header1": "value1,value2"。保留一些标头。要了解更多信息,请参阅“保留的标头”。
查询字符串值 $request.querystring.name 或 ${request.querystring.name} 查询字符串名称区分大小写。API Gateway 将多个值与逗号组合在一起,例如 "querystring1" "Value1,Value2"
请求正文 $request.body.name 或 ${request.body.name} JSON 路径表达式 不支持递归下降 ($request.body..name) 和筛选表达式 (?(expression))。
注意

当您指定 JSON 路径时,API Gateway 会在请求正文的 100 KB 处将其截断,然后应用选择表达式。要发送大于 100 KB 的负载,请指定 $request.body

请求路径 $request.path 或 $ {request.path} 请求路径,没有阶段名称。
路径参数 $request.path.name 或 ${request.path.name} 请求中路径参数的值。例如,如果路由为 /pets/{petId},则可以从具有 petId 的请求中映射 $request.path.petId 参数。
上下文变量 $context.variableName 或 ${context.variableName} 上下文变量的值。
注意

仅支持特殊字符 ._

阶段变量 $stageVariables.variableName 或 ${stageVariables.variableName} 阶段变量的值。
静态值 string 常量值。
注意

要在选择表达式中使用多个变量,请将该变量括在括号中。例如,${request.path.name} ${request.path.id}

转换 API 响应

在将响应返回给客户端之前,您可以使用响应参数转换来自后端集成的 HTTP 响应。在 API Gateway 将响应返回给客户端之前,您可以修改响应的标头或状态码。

您可以为集成返回的每个状态代码配置响应参数。响应参数是键值映射。键用于标识要更改的请求参数的位置以及如何更改它。值指定参数的新数据。

下表显示了支持的键。

类型 语法
标头 append|overwrite|remove:header.headername
状态代码 overwrite:statuscode

下表显示了可以映射到参数的支持值。

类型 语法 备注
标头值 $response.header.name 或 ${response.header.name} 标头名称不区分大小写。API Gateway 将多个标头值与逗号组合在一起,例如 "header1": "value1,value2"。保留一些标头。要了解更多信息,请参阅“保留的标头”。
响应正文 $response.body.name 或 ${response.body.name} JSON 路径表达式。不支持递归下降 ($response.body..name) 和筛选表达式 (?(expression))。
注意

当您指定 JSON 路径时,API Gateway 会在响应正文的 100 KB 处将其截断,然后应用选择表达式。要发送大于 100 KB 的负载,请指定 $response.body

上下文变量 $context.variableName 或 ${context.variableName} 受支持的上下文变量的值。
阶段变量 $stageVariables.variableName 或 ${stageVariables.variableName} 阶段变量的值。
静态值 string 常量值。
注意

要在选择表达式中使用多个变量,请将该变量括在括号中。例如,${request.path.name} ${request.path.id}

保留的标头

保留以下标头。您无法为这些标头配置请求或响应映射。

  • access-control-*

  • apigw-*

  • 授权

  • Connection

  • Content-Encoding

  • 内容长度

  • Content-Location

  • 已转发

  • Keep-Alive

  • Origin

  • Proxy-Authenticate

  • Proxy-Authorization

  • TE

  • Trailers

  • Transfer-Encoding

  • 升级

  • x-amz-*

  • x-amzn-*

  • X-Forwarded-For

  • X-Forwarded-Host

  • X-Forwarded-Proto

  • Via

示例

以下 AWS CLI 示例会配置参数映射。如需示例 AWS CloudFormation 模板,请参阅 GitHub

向 API 请求添加标头

以下 create-integration 命令在 API 请求到达后端集成之前,为请求创建名为 header1 的标头。API Gateway 使用请求 ID 填充标头。

aws apigatewayv2 create-integration \ --api-id abcdef123 \ --integration-type HTTP_PROXY \ --payload-format-version 1.0 \ --integration-uri 'https://api.example.com' \ --integration-method ANY \ --request-parameters '{ "append:header.header1": "$context.requestId" }'

重命名请求标头

以下 create-integration 命令将请求标头从 header1 重命名为 header2

aws apigatewayv2 create-integration \ --api-id abcdef123 \ --integration-type HTTP_PROXY \ --payload-format-version 1.0 \ --integration-uri 'https://api.example.com' \ --integration-method ANY \ --request-parameters '{ "append:header.header2": "$request.header.header1", "remove:header.header1": "''"}'

更改集成的响应

以下 create-integration 命令为集成配置响应参数。当集成返回 500 状态码时,API Gateway 会将状态码更改为 403,然后在响应中添加 header11。当集成返回 404 状态码时,API Gateway 会向响应添加 error 标头。

aws apigatewayv2 create-integration \ --api-id abcdef123 \ --integration-type HTTP_PROXY \ --payload-format-version 1.0 \ --integration-uri 'https://api.example.com' \ --integration-method ANY \ --response-parameters '{"500" : {"append:header.header1": "$context.requestId", "overwrite:statuscode" : "403"}, "404" : {"append:header.error" : "$stageVariables.environmentId"} }'

删除配置的参数映射

以下 update-integration 命令删除以前为 append:header.header1 配置的请求参数。它还删除了先前为 200 状态码配置的响应参数。

aws apigatewayv2 update-integration \ --api-id abcdef123 \ --integration-id hijk456 \ --request-parameters '{"append:header.header1" : ""}' \ --response-parameters '{"200" : {}}'

下一主题:

OpenAPI

上一主题:

CORS
隐私网站条款Cookie 首选项
© 2025, Amazon Web Services, Inc. 或其附属公司。保留所有权利。