Amazon dynamodb 在主体映射模板AWS API Gateway中将参数强制转换为整数

Amazon dynamodb 在主体映射模板AWS API Gateway中将参数强制转换为整数,amazon-dynamodb,aws-api-gateway,Amazon Dynamodb,Aws Api Gateway,我在Integration Request中的Body Mapping模板中使用了一些算法: #set($now = $context.requestTimeEpoch/1000) #set($soon = $now + 600) { "TableName": "events", .... [ here get events between $now and $soon] } 最近我需要通过一个参数传递一个偏移量: #set($now = $context.requestTimeEpo

我在Integration Request中的Body Mapping模板中使用了一些算法:

#set($now = $context.requestTimeEpoch/1000)
#set($soon = $now + 600)
{
    "TableName": "events",
.... [ here get events between $now and $soon]
}
最近我需要通过一个参数传递一个偏移量:

#set($now = $context.requestTimeEpoch/1000)
#set($soon = $now + $input.params('offset'))
{
    "TableName": "events",
.... [ here get events between $now and $soon] ....
}
结果表明,如果
$now
1518939082
,那么查询参数
?offset=600
$soon
将是
1518939082600
的串联。我尝试了各种方法强制将参数识别为整数,包括:

  • #set($offset=$Integer.parseInt($input.params('offset'))
  • #设置($offset=0+$input.params('offset'))
  • #设置($offset=1*$input.params('offset'))
  • 它们都不起作用。在每次测试之前,我插入了
    #set($offset=0)
    ,这样我就可以从“返回一个空值”中分辨出“什么都没有发生”

  • 在第一种情况下,$offset打印一个空字符串,而不是0。(这也发生在
    $Integer.parseInt(“1”)
    上。)
  • 在第二种情况下,$offset打印“0”和字符串值“offset”的串联
  • 在第三种情况下,$offset打印一个0,就好像整行不存在一样
  • 他们都没有成功地将参数转换为整数


    有没有办法将该参数用作整数?

    请澄清“它们都不起作用”。。。它们是否仍然像字符串一样工作,或者抛出错误,或者到底是什么?像
    $Integer.parseInt($input.params('offset'))+($context.requestTimeEpoch/1000)
    这样的东西有什么作用呢?我尽可能地添加了测试结果。Amazon中的Body Mapping模板从未在集成测试界面中抛出任何错误或给出任何错误消息,尽管测试日志非常详细,因此我们只能通过变量值的变化来观察其行为。然而,您的建议给出了一个奇怪的结果,
    “$context.requestTimeEpoch/1000”
    ,尽管我在源代码中没有引用该表达式。