如何在 HTTP API 中映射 API Gateway 集成的响应状态代码?

1 分钟阅读
0

负载版本 1.0 和 2.0 之间有什么区别? 如何在 Amazon API Gateway 中映射 HTTP API 返回的状态代码?或如何在 HTTP API 中映射状态代码?

解决方法

您想要覆盖后端响应状态代码时,请使用 API Gateway 映射模板或正则表达式来映射状态代码。您可以在 HTTP API 的代理和非代理集成中执行此操作。

使用 HTTP API

与 REST API 相比,HTTP API 在设计上有所不同。HTTP API 由默认代理集成并返回相同的响应。与 REST API 不同,HTTP API 提供两个负载格式版本,与 Lambda 集成一起使用。对于 1.0 和 2.0 负载格式版本,有相应的 Lambda 函数响应格式。

使用负载格式版本 2.0 时,如果 Lambda 函数未在有效的 JSON 响应中明确传递状态代码,则 API Gateway 会认定:

  • IsBase64Encodedfalse
  • statusCode200
  • content-typeapplication/json
  • body 为来自 Lambda 函数的响应

在上述示例中,HTTP API 不返回任何错误,但会转发认定的状态代码 200。

使用负载格式版本 1.0 时,Lambda 集成必须返回以下格式的响应。API Gateway 不对此响应做出假设,而是返回 500 代码错误。

{
    "isBase64Encoded": true|false,
    "statusCode": httpStatusCode,
    "headers": { "headername": "headervalue", ... },
    "multiValueHeaders": { "headername": ["headervalue", "headervalue2", ...], ... },
    "body": "..."
}

映射状态代码

要将状态代码映射为静态值(基于返回的后端响应键),请执行以下操作:

  1. 导航到 HTTP API 中配置的集成。
  2. 选择要修改的集成路由。选择管理集成。滚动到参数映射,然后选择创建参数映射
  3. 映射类型设置为响应(基于状态代码)。还要设置响应状态代码,因为与该状态代码匹配的集成响应必须要应用参数映射。
  4. 选择添加新映射
  5. 要修改的参数下,选择 statusCode。将修改类型设置为覆盖
  6. 设置为静态值
    注意: 需要将此值发送给客户端。
  7. 选择创建

相关信息

使用模型和映射模板

转换 API 请求和响应

AWS 官方
AWS 官方已更新 2 年前