Velocity Apache 访问地图中不存在的元素

Velocity Apache accessing element in map that doesn't exist

我正在尝试从附加到客户端请求的 header 中提取字符串。

{
    "version": "2017-02-28",
    "operation": "Invoke",
    "payload": {
        "type": "Query",
        "resolver": "apiContext",
        "arguments":  $utils.toJson($context.arguments),
        "contextToken": "$context.request.headers["context-token"]"
    }
}

如果客户端通过header,它能够提取内容是否包含空值、未定义、数字或字符串值。但是,当我尝试在没有 header 的情况下命中此请求时(意思是没有 contect-token header),传递给我的 AWS lambda 处理程序的值包含 "contextToken": "$context.request.headers["context-token"]" 并且我得到一个错误 Unexpected character ('c' (code 99)): was expecting comma to separate Object entries at [Source: (String)"。我正在努力弄清楚如何传递 header 的值,前提是它存在于 headers 映射中。

您可以使用 Velocity 静默参考:

"contextToken": "$!context.request.headers['context-token']"