针对 API Gateway 中的 WebSocket API 的数据转换
在 API Gateway 中,WebSocket API 的方法请求采用的负载格式可能与后端所需的相应集成请求负载的格式不同。同样,后端返回的集成响应负载可能不同于前端希望的方法响应负载。
API Gateway 允许您使用映射模板将负载从方法请求映射到相应的集成请求,以及从集成响应映射到相应的方法响应。您可以指定模板选择表达式来确定执行必要的数据转换时所用的模板。
您可以使用数据映射将路由请求中的数据映射到后端集成。要了解更多信息,请参阅“为 API Gateway 中的 WebSocket API 设置数据映射”。
映射模板和模型
映射模板是一个用 Velocity 模板语言 (VTL)
负载可以拥有符合 JSON 架构草案 4
模板选择表达式
要使用映射模板转换负载,请在集成请求或集成响应中指定 WebSocket API 模板选择表达式。将会求解此表达式以确定用于将请求正文转换为集成请求正文(通过输入模板)或将响应正文转换为路由响应正文(通过输出模板)的输入或输出模板(如果有)。
Integration.TemplateSelectionExpression
支持 ${request.body.jsonPath}
和静态值。
IntegrationResponse.TemplateSelectionExpression
支持 ${request.body.jsonPath}
、${integration.response.statuscode}
、${integration.response.header.headerName}
、${integration.response.multivalueheader.headerName}
和静态值。
集成响应选择表达式
当您为 WebSocket API 设置集成响应时,您可以指定(可选)集成响应选择表达式。此表达式确定在集成返回时应选择什么
。此表达式的值当前受 API Gateway 限制,定义如下。认识到此表达式只与非代理集成相关;代理集成无需建模或修改便会将响应负载传递回调用方。IntegrationResponse
与前面的其他选择表达式不同,此表达式当前支持模式匹配 格式。表达式应该用正斜杠包装起来。
目前,该值是固定的,具体取决于
:integrationType
-
对于基于 Lambda 的集成,它是
$integration.response.body.errorMessage
。 -
对于
HTTP
和MOCK
集成,它是$integration.response.statuscode
。 -
对于
HTTP_PROXY
和AWS_PROXY
,不会使用此表达式,因为您请求将负载传递给调用方。