我有一个简单的POST方法连接到AWS API Gateway中的lambda函数。
当我执行测试时(通过Gateway API控制台)一切正常,测试得到了我正在寻找的结果。它简单 - 发布一个JSON,得到一个JSON。
然而,在部署API然后发送测试中使用的相同JSON(通过http post)之后,我得到'无法将请求主体解析为json' 。
有谁知道我可能做错了什么? 注意:我不打算使用模型,我只想传递JSON。我相信,当亚马逊写下诸如“输入直通”之类的东西时。 它们意味着输入可以传递给lambda函数。
以下是我的AWS Gateway API设置的图片:
答案 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 ...