使用Javascript从浏览器调用AWS Lambda,如何向函数发送输入值?
我一直在尝试调用我的AWS Lambda函数(通过Api网关rest),该函数是用Java编写的,它以一个对象参数作为输入,该参数随后被视为一个简单的字符串。我已经通过AWS Lambda控制台和Postman之类的rest客户机对其进行了测试,效果良好。这是我的Java处理程序:使用Javascript从浏览器调用AWS Lambda,如何向函数发送输入值?,javascript,java,amazon-web-services,lambda,aws-lambda,Javascript,Java,Amazon Web Services,Lambda,Aws Lambda,我一直在尝试调用我的AWS Lambda函数(通过Api网关rest),该函数是用Java编写的,它以一个对象参数作为输入,该参数随后被视为一个简单的字符串。我已经通过AWS Lambda控制台和Postman之类的rest客户机对其进行了测试,效果良好。这是我的Java处理程序: public class LambdaInsertMessage implements RequestHandler<Object, String>{ @Override public
public class LambdaInsertMessage implements RequestHandler<Object, String>{
@Override
public String handleRequest(Object obj, Context context) {
String input = obj.toString();
//insert input in my database
return "ok";
}
}
这不起作用,因为Lambda函数被正确调用,但它接收一个空对象作为输入,而不是我在页面中插入的消息(var message
在调试浏览器控制台时正确设置了值)
我在页面中有另一个Lambda调用,这是一个简单的hello world,我不在输入中添加任何数据,Lambda工作正常,我能够记录Lambda函数发送的响应:
function helloWorld() {
var xhttp = new XMLHttpRequest();
xhttp.onreadystatechange = function() {
if (this.readyState == 4 && this.status == 200) {
console.log(this.responseText);
}
};
xhttp.open("GET", "https://xxxx.execute-api.us-east-1.amazonaws.com/helloWorld", true);
xhttp.send();
}
所以我的问题是,在html页面中,我能够从Lambda函数中检索数据,但不能向它们发送输入数据。我做错了什么
谢谢你的帮助 您正在向API发送输入,在调用
xhttp.open
时,它不应该使用“POST”方法吗
xhttp.open("POST", "https://xxx.execute-api.us-east-1.amazonaws.com/insert", true);
启用可以帮助对到达api网关的请求进行故障诊断。也许他们是畸形的?您是否也使用lambda代理集成?谢谢,这解决了我的问题!我不认为打GET电话实际上会清空身体请求,我认为使用POST更像是一种我现在忽略的最佳实践,因为我只是在尝试。再次感谢
xhttp.open("POST", "https://xxx.execute-api.us-east-1.amazonaws.com/insert", true);