AWS WebSocket API Gateway 模板选择表达式示例

McS*_*man 7 websocket aws-api-gateway

AWS API Gateway 服务页面表示,模板选择表达式可用于实现转换请求正文的方法。然而,这些选择表达式的文档非常少,我还没有找到任何示例。

  1. 我在哪里可以找到这些表达式的示例?
  2. 在哪里可以找到这些表达式中可用的变量和选项?

小智 8

要将内容添加到集成请求,您需要使用请求模板。请求模板是实际生成新请求正文的部分,而请求选择模板用于确定要使用哪个请求模板的过程。

  1. 关闭路由的 HTTP 代理集成。(否则您无法修改请求。)
  2. 保存您的更改。(在您执行此操作之前,“请求模板”部分不会出现。)
  3. 设置您的模板选择表达式。这用于从传入请求对象中查找值。(如果您想匹配所有传入请求,请输入\$default。请注意斜杠。完整文档位于此处。)
  4. 设置您的模板密钥。将此值与模板选择表达式选择的值进行比较。如果匹配,则使用模板。(如果您想匹配所有传入请求,请输入$default。请注意没有斜杠。)
  5. 单击模板键打开模板编辑器。您可以在此处输入模板,该模板将作为请求正文发送到您的集成端点。例如,如果要将连接 ID 和传入查询参数转发到集成端点,可以使用以下命令:
{
    "myConnectionIdProperty": "$context.connectionId",
    "myQueryParams": $input.params()
}
Run Code Online (Sandbox Code Playgroud)

您可以在此处找到有关模板表达式中可用变量的文档。

(请注意,虽然$request是模板选择表达式中的有效变量,但它在模板本身中不是有效变量。请$input在此处使用。)


小智 0

基本上模板选择表达式的工作方式与路由选择表达式相同。路线选择表达式的所有示例都将起作用。 https://docs.aws.amazon.com/apigateway/latest/developerguide/apigateway-websocket-api-selection-expressions.html#apigateway-websocket-api-route-selection-expressions

除此之外,用于集成响应的 TemplateSelectionExpression 还支持其他几个变量:

  • $integration.response.statuscode
  • $integration.response.header。标头名称
  • $integration.response.multivalueheader。标头名称