在Amazon API网关中,我使用正文映射模板来转换请求。我发现跟踪逗号是很麻烦的(特别是有多个可选参数)所以我想出了以下内容:
{
"context": { /* context params */ },
"request": {
#foreach($queryParam in $input.params().querystring.keySet())
"$queryParam" : "$input.params().querystring.get($queryParam)"
#if($foreach.hasNext),#end
#end
}
}
我发现这个问题是当$input.params().querystring.get($queryParam)
是一个整数(并且不应该用引号括起来)时它就不起作用了。这看起来很公平,但我如何改进这一点来检查$input.params().querystring.get($queryParam)
是否是一个字符串,以便随后我可以用引号将其包装好?
请求
http://www.somewebsite.com/apiendpoint?id=4&name=Terry&aliases=[Tel,Terry]
转化
{
"id": "4",
"name": "Terry",
"aliases": "[Tel,Terry]"
}
预期转型
{
"id": 4,
"name": "Terry",
"aliases": ["Tel","Terry"]
}
答案 0 :(得分:0)
然后你会做类似的事情:
{
"context": { /* context params */ },
"request": {
#foreach($queryParam in $input.params().querystring.keySet())
#set($value = $input.params().querystring.get($queryParam))
#set($isNum = $value.matches('[-+]?\d+(\.\d+)?'))
"$queryParam" : #if(!$isNum)"#end$value#if(!$isNum)"#end
#if($foreach.hasNext),#end
#end
}
}