使用 Lambda 的 Amazon Gateway API - 无法将请求正文解析为 json
Amazon Gateway API with Lambda - Could not parse request body into json
我似乎遇到了 Amazon Gateway API 的问题,例如我不喜欢我发送的参数。
$.ajax({
url: "https://tibqwxuqoh.execute-api.us-east-1.amazonaws.com/dev/getitems",
type: "POST",
data: {
"device": "test",
"datetime": "1446757400919"
},
success: function (returnhtml) {
console.log(returnhtml);
$("#result").append("DOES NOT WORK - <br>" + JSON.stringify(returnhtml));
}
});
$.ajax({
url: "https://tibqwxuqoh.execute-api.us-east-1.amazonaws.com/dev/getitems",
type: "POST",
data: {},
success: function (returnhtml) {
console.log(returnhtml);
$("#result").append("<br>WORKS ???? - <br>" + JSON.stringify(returnhtml));
}
});
这是一个工作示例。
http://jsfiddle.net/Uwcuz/4315/
谁能告诉我为什么每次添加参数时都不让我发送参数,我会收到此错误。
{
Type = User;
message = "Could not parse request body into json.";
}
好吧,这行得通,但对我来说有点奇怪。
$.ajax({
url: "https://tibqwxuqoh.execute-api.us-east-1.amazonaws.com/dev/getitems",
type: "POST",
data: "{\"device\": \"test\",\"datetime\": \"1446757444524\"}",
success: function (returnhtml) {
console.log(returnhtml);
$("#result").append("WORKS - <br>" + JSON.stringify(returnhtml));
}
});
问题在于您如何将数据发送到 API 网关。
在不知道 API 配置的详细信息的情况下,我猜测您有 application/json 的请求映射设置。
jQuery 默认情况下 post 您的数据为 application/x-www-form-urlencoded 但您想将其作为 json.
发送
您可以做到这一点,而不必自己 fiddle 过多地处理数据:
var requestParams = {
url: "https://tibqwxuqoh.execute-api.us-east-1.amazonaws.com/dev/getitems",
method: "POST,
contentType: "application/json",
dataType: "json",
data: JSON.stringify({
"device": "test",
"datetime": "1446757400919"
});
};
var request = $.ajax(requestParams);
这里的关键是 JSON.stringify() 并告诉 jQuery dataType 是 json 以及将 contentType 设置为 application/json.
我似乎遇到了 Amazon Gateway API 的问题,例如我不喜欢我发送的参数。
$.ajax({
url: "https://tibqwxuqoh.execute-api.us-east-1.amazonaws.com/dev/getitems",
type: "POST",
data: {
"device": "test",
"datetime": "1446757400919"
},
success: function (returnhtml) {
console.log(returnhtml);
$("#result").append("DOES NOT WORK - <br>" + JSON.stringify(returnhtml));
}
});
$.ajax({
url: "https://tibqwxuqoh.execute-api.us-east-1.amazonaws.com/dev/getitems",
type: "POST",
data: {},
success: function (returnhtml) {
console.log(returnhtml);
$("#result").append("<br>WORKS ???? - <br>" + JSON.stringify(returnhtml));
}
});
这是一个工作示例。 http://jsfiddle.net/Uwcuz/4315/
谁能告诉我为什么每次添加参数时都不让我发送参数,我会收到此错误。
{
Type = User;
message = "Could not parse request body into json.";
}
好吧,这行得通,但对我来说有点奇怪。
$.ajax({
url: "https://tibqwxuqoh.execute-api.us-east-1.amazonaws.com/dev/getitems",
type: "POST",
data: "{\"device\": \"test\",\"datetime\": \"1446757444524\"}",
success: function (returnhtml) {
console.log(returnhtml);
$("#result").append("WORKS - <br>" + JSON.stringify(returnhtml));
}
});
问题在于您如何将数据发送到 API 网关。 在不知道 API 配置的详细信息的情况下,我猜测您有 application/json 的请求映射设置。 jQuery 默认情况下 post 您的数据为 application/x-www-form-urlencoded 但您想将其作为 json.
发送您可以做到这一点,而不必自己 fiddle 过多地处理数据:
var requestParams = {
url: "https://tibqwxuqoh.execute-api.us-east-1.amazonaws.com/dev/getitems",
method: "POST,
contentType: "application/json",
dataType: "json",
data: JSON.stringify({
"device": "test",
"datetime": "1446757400919"
});
};
var request = $.ajax(requestParams);
这里的关键是 JSON.stringify() 并告诉 jQuery dataType 是 json 以及将 contentType 设置为 application/json.