AWS API Gateway - 调用API方法时出错 - '无法将请求主体解析为json'

时间:2015-10-29 19:01:10

标签: json amazon-web-services aws-api-gateway

我有一个简单的POST方法连接到AWS API Gateway中的lambda函数。

当我执行测试时(通过Gateway API控制台)一切正常,测试得到了我正在寻找的结果。它简单 - 发布一个JSON,得到一个JSON。

然而,在部署API然后发送测试中使用的相同JSON(通过http post)之后,我得到'无法将请求主体解析为json'

有谁知道我可能做错了什么? 注意:我不打算使用模型,我只想传递JSON。我相信,当亚马逊写下诸如“输入直通”之类的东西时。 它们意味着输入可以传递给lambda函数。

以下是我的AWS Gateway API设置的图片:

方法请求: enter image description here

整合请求 enter image description here

方法响应: enter image description here

整合回应: enter image description here

2 个答案:

答案 0 :(得分:5)

我找到了解决方案。问题是在POST请求中你需要将你的身体作为字符串而不是JSON对象发送,并且该字符串需要格式化正确

即'{“key1”:“val1”,“key2”:22,“key3”:15,“key4”:“val4”}'

像这样:

function post() {


$.ajax({
    url: "https://myapi.us-east-1.amazonaws.com/myStage/myPath",
    type: "POST",
    data: '{"key1": "val1","key2": 22,"key3": 15,"key4": "val4"}',
    mozSystem: true,
    dataType: "text", //set to"json" usually
    success: function (result) {
        switch (result) {
            case true:
                processResponse(result);
                break;
            default:
                resultDiv.html(result);
        }
    },
    error: function (xhr, ajaxOptions, thrownError) {
        alert('error ' + xhr.status + ' ' + thrownError);
        alert(thrownError);
    }
 });


};

答案 1 :(得分:0)

以字符串格式设置参数(没有json和没有数组):

我在curl执行中使用了http_build_query()函数:

Time_Namelookup: 0,1  0,2  0,12  0,45       ...
Time_Connect: 0,34 0,23  0,23 0,11          ...
Time_Starttransfer: 0,9 0,23  0,12          ...