在 API Gateway 中设置 WebSocket API 集成响应 - Amazon API Gateway
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

在 API Gateway 中设置 WebSocket API 集成响应

集成响应概述

API Gateway 的集成响应是一种用于对后端服务的响应进行建模和处理的方法。REST API 与 WebSocket API 集成响应的设置存在一些差别,但从概念上讲,行为是相同的。

WebSocket 路由可以配置为双向或单向通信。

  • 当路由配置为双向通信时,集成响应能让您对返回的消息负载配置转换,类似于 REST API 的集成响应。

  • 如果路由配置为单向通信,则无论是否有任何集成响应配置,在处理消息后都不会通过 WebSocket 通道返回响应。

除非您设置了路由响应,否则 API Gateway 不会将后端响应传递给路由响应。要了解有关设置路径响应的信息,请参阅 在 API Gateway 中为 WebSocket API 设置路由响应

双向通信的集成响应

集成可以分为代理集成和非代理集成。

重要

对于代理集成,API Gateway 会自动将后端输出作为完整的负载传递给调用方。没有集成响应。

对于非代理集成,您必须至少设置一个集成响应:

  • 理想情况下,您的一个集成响应应该在无法进行明确的选择时是包罗万象的响应。此默认情况是通过设置 $default 的集成响应键来表示的。

  • 在所有其他情况下,集成响应键起正则表达式的作用。它应遵循 "/expression/" 格式。

对于非代理 HTTP 集成:

  • API Gateway 将尝试匹配后端响应的 HTTP 状态代码。在这种情况下,集成响应键将起正则表达式的作用。如果找不到匹配项,则会选择 $default 作为集成响应。

  • 如上所述,模板选择表达式的作用相同。例如:

    • /2\d\d/:接收并转换成功响应

    • /4\d\d/:接收并转换不正确的请求错误

    • $default:接收并转换所有意外响应

有关模板选择表达式的更多信息,请参阅 模板选择表达式

使用 API Gateway 控制台设置集成响应

要使用 API Gateway 控制台为 WebSocket API 设置路由集成响应,请执行以下操作:

  1. 通过以下网址登录到 Amazon API Gateway 控制台:https://console.aws.amazon.com/apigateway

  2. 选择 WebSocket API,然后选择路由。

  3. 选择集成请求选项卡,然后在集成响应设置部分中,选择创建集成响应

  4. 对于响应密钥,输入一个值,该值将在评估响应选择表达式后在传出消息中的响应密钥中找到。例如,您可以输入 /4\d\d/ 以接收和转换错误的请求错误,也可以输入 $default 以接收和转换与模板选择表达式匹配的所有响应。

  5. 对于模板选择表达式,输入选择表达式来评估传出的消息。

  6. 选择创建响应

  7. 您还可以定义映射模板来配置返回的消息有效负载的转换。选择创建模板

  8. 输入键名称。如果您选择的是默认模板选择表达式,请输入 \$default

  9. 对于响应模板,请在代码编辑器中输入您的映射模板。

  10. 选择创建模板

  11. 选择部署 API 以部署您的 API。

使用以下 wscat 命令连接到您的 API。有关 wscat 的更多信息,请参阅 使用 wscat 连接到 WebSocket API 并向其发送消息

wscat -c wss://api-id.execute-api.us-east-2.amazonaws.com/test

当您调用路由时,应返回消息有效负载。

使用 Amazon CLI 设置集成响应

要使用 Amazon CLI 为 WebSocket API 设置集成响应,请调用 create-integration-response 命令:以下 CLI 命令显示创建 $default 集成响应的示例:

aws apigatewayv2 create-integration-response \ --api-id vaz7da96z6 \ --integration-id a1b2c3 \ --integration-response-key '$default'