0

在 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"]
}
4

1 回答 1

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
    }
}
于 2018-04-22T13:14:53.913 回答