我有一个定义简单 GET 的 AWS Gateway API。我用它来触发 Lambda。使用请求映射,我获取查询参数并创建一个 json 对象以提供 Lambda。这是我的映射
#set ($myMap = $input.params().get("querystring"))
{
#foreach($paramName in $myMap.keySet() )
"$paramName" : "$util.escapeJavaScript($myMap.get($paramName))"
#if($foreach.hasNext),#end
#end
}
我是 VTL 和 Amazon Gateway API 的新手,我似乎犯了一个错误,导致这永远无法完成。我尝试了很多变体,但如果我引用$myMap.get($key)
它就不会完成。我究竟做错了什么?我很想了解。也欢迎提出相同输出的建议。
更新
如果我删除“{”和“}”这不再超时!现在我不知道为什么这很重要,而且它根本不是我想要的格式,而是有趣的花絮来深入了解这一点。
更新 2
简化了逻辑及其在相同问题上的反映。我还发现,如果在打开另一个对象的 json 中放置一个属性,那么逻辑就可以工作。这很糟糕。
{
"data": {
#foreach($paramName in $myMap.keySet() )
"$paramName" : "$util.escapeJavaScript($myMap.get($paramName))"
#if($foreach.hasNext),#end
#end
}
}