使用Javascript从浏览器调用AWS Lambda,如何向函数发送输入值?

使用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

我一直在尝试调用我的AWS Lambda函数(通过Api网关rest),该函数是用Java编写的,它以一个对象参数作为输入,该参数随后被视为一个简单的字符串。我已经通过AWS Lambda控制台和Postman之类的rest客户机对其进行了测试,效果良好。这是我的Java处理程序:

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);