【发布时间】:2016-07-12 15:04:12
【问题描述】:
我已经尝试了几天从 AWS 中的 API 网关发送到 Lambda 函数的参数,但我没有成功。
我决定从头开始,所以我按照他们的演练 (http://docs.aws.amazon.com/apigateway/latest/developerguide/getting-started.html#getting-started-new-lambda)
我已检查过此演练两次,并且已按照信函中的步骤进行操作。
问题
当我从 Postman 或在 Swift 中测试 API 时,我收到了错误:
{“message”:“无法将请求正文解析为 json:数值中出现意外字符(\'-\'(代码 45)):预期数字 (0-9) 后跟减号,对于有效数值\n 在 [来源:[B@c036d15;行:1,列:3]"}
在邮递员中,当我以 JSON 格式查看结果时,我得到了
错误的字符串
Lambda 函数
函数是演练中的基本示例:
console.log('Loading event');
exports.handler = function(event, context) {
var name = (event.name === undefined ? 'No-Name' : event.name);
console.log('"Hello":"' + name + '"');
context.done(null, {"Hello":name}); // SUCCESS with message
};
当从 Lambda 控制台进行测试并使用测试数据时,我得到了结果:
{
"Hello": "TestUser123"
}
从 API Gateway 测试时,结果也是:
{
"Hello": "TestUser123"
}
谁能明白为什么两个测试控制台都允许这项工作,但是当使用 POSTMAN 测试或在 Swift 脚本中使用时,它却不起作用?
编辑 1
在邮递员中,我将内容类型设置为 application/json
脚本返回默认值:
{
"Hello": "user"
}
但是,当我在 POSTMAN 中添加参数 name 和 TestUser123 时,它会返回错误。
更新 1
好的,所以我将映射模板更改为在另一个答案中找到的模板:
{ "name": "$input.params('name')" }
现在结果是:
{
"Hello": ""
}
任何想法为什么它没有得到这个名字?
【问题讨论】:
-
任何不赞成投票且没有任何 cmets 的理由 - 不是很有帮助
-
我注意到 Postman 默认返回“Bad string”(Body > Pretty)。更改为原始响应。
标签: json node.js amazon-web-services aws-lambda