1

我刚开始学习aws lambda &网关,现在我正在尝试使用aws Lambda制作一个简单的API。如何通过aws网关将数据发送到aws lambda?

这是我的lambda函数。

'use strict' 
console.log('Loading event'); 

exports.handler = function(event, context, callback) { 
var name = (event.name === undefined? 'No-Name' : event.name); 
callback(null, {"Your-name" : name}); // SUCCESS with message 
}; 

这是我的映射模板。(内容类型:应用程序/ JSON)

{"name" : "$input.params('name')"} 

我要改变名称的价值,所以我想,

var xhr = new XMLHttpRequest(); 
xhr.open('GET', 'my api url...'); 
xhr.onreadystatechange = function() { 
    if (xhr.readyState === 4) { 
     console.log(xhr.response); 
    } 
}; 
xhr.setRequestHeader("Content-Type", "application/json"); 
xhr.responseType = 'json'; 
var name = "JACK"; 
xhr.send(name); 

它不起作用。 我想要一些像{“Your-name”:“JACK”}但它只返回{“Your-name”:“No-Name”}。 我该如何解决这个问题?

+0

这是一个愚蠢的错误。 我不得不使用'POST',而不是'GET'。 –

回答

1

你尝试:

var json = JSON.stringify({ name: "JACK" }); 
 
xhr.send(json);

+0

是的,我试过,但它不起作用。 –

+0

lambda函数的输入格式必须是JSON,这就是为什么它不起作用。我无法用XMLhttprequest发送JSON对象,所以我试图在集成请求中使用映射模板..但对我来说没有任何东西容易haha –

+0

将console.log(JSON.stringify(event,null,2))放入您的处理程序,再次发出请求并查看事件对象中的内容。 –

相关问题