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

时间:2019-01-02 05:43:36

标签: websocket aws-api-gateway

AWS API网关服务页面说,模板选择表达式可用于实现一种转换请求正文的方法。但是,这些选择表达式的文档非常简短,我无法找到任何示例。

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

2 个答案:

答案 0 :(得分: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。 headerName
  • $ integration.response.multivalueheader。 headerName

答案 1 :(得分:0)

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

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

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

(请注意,尽管$request在模板 Selection 表达式中是有效变量,但在模板本身中不是有效变量。请在此处使用$input。)