2017-08-29 33 views
0

我正在使用AWS lambda + API网关,并且需要在URL(GET方法)中为REST调用传递一个数字数组。看起来好的方法是将数字作为字符串(逗号分隔)传递,然后使用JSON.parse转换为数组数组。JSON.parse()中的错误(当从API网关中调用时)

以下是我使用的AWS lambda代码;

exports.handler = (event, context, callback) => { 

    var arr = JSON.parse('[' + event.numbers + ']'); 
    console.log("array: " + arr); 

    // TODO implement 
    callback(null, 'Hello from Lambda'); 
}; 

我使用此Input输入测试事件在AWS Lambda中测试此函数;

{ 
    "numbers": "1,5" 
} 

而且一切都按预期工作;没有错误。但是,当我通过API网关测试它,并在查询中传递数字作为字符串时,我得到以下错误(通过CloudWatch观察);

*19:19:02 
START RequestId: eabab882-8cee-11e7-8e2f-79d3086e061f Version: $LATEST 
19:19:02 
2017-08-29T19:19:02.688Z eabab882-8cee-11e7-8e2f-79d3086e061f SyntaxError: Unexpected token u in JSON at position 1 at Object.parse (native) at exports.handler (/var/task/index.js:4:20) 
19:19:02 
END RequestId: eabab882-8cee-11e7-8e2f-79d3086e061f 
19:19:02 
REPORT RequestId: eabab882-8cee-11e7-8e2f-79d3086e061f Duration: 215.25 ms Billed Duration: 300 ms Memory Size: 128 MB Max Memory Used: 18 MB 
19:19:02 
RequestId: eabab882-8cee-11e7-8e2f-79d3086e061f Process exited before completing request* 

这是传递给lambda的请求,如日志所示;

"body-json" : {}, 
"params" : { 
"path" : { 
    } 
    ,"querystring" : { 
     "numbers" : "1,6" 
      } 
    ,"header" : { 
    } 
    }, 
"stage-variables" : { 
}, 

我找不出什么问题,因为我在两种情况下都传递了相同的字符串。

我将不胜感激任何帮助。

感谢 格斯

回答

相关问题