我正在尝试使用PUT请求将项添加到现有的dynamodb表。我尝试了几种代码变体,包括使用.put和.putItem函数。当我将url硬编码到浏览器中时,我收到以下错误:
Cannot GET /add-student?student_id=5&name=carl
当我剪切给我这个错误的确切网址并将其粘贴到api测试应用程序Postman时,它完美无缺。我很清楚错误说我尝试了GET请求,但我不知道我的代码有什么问题。
这是我的代码。
app.put('/add-student', function (req, res) {
var params = {
TableName : "student",
Item:{
"student_id" : {"N": req.query.student_id},
"name" : {"S": req.query.name}
}
}
dynamodb.putItem(params, function(err, data) {
if(err)
console.log(err);
else
console.log(JSON.stringify(data));
});
});
可能导致这被解释为get请求的原因是什么?非常感谢任何帮助。
答案 0 :(得分:2)
默认情况下,当从浏览器点击URL时,请求将作为HTTP GET请求发送。如果不使用插件或工具,您无法直接从浏览器发送GET请求。
这是使用像POSTMAN这样的工具或任何其他插件(如Firefox插件)来测试适用于不同HTTP方法(如POST,PUT等)的REST服务的主要原因。
1)我想当你从POSTMAN点击URL时,你会选择PUT方法。
2)如果在POSTMAN中选择GET方法,则会出现相同的错误。
请参阅下面的屏幕截图。从POSTMAN发送请求会抛出相同的错误。
来自POSTMAN的GET请求: -
来自POSTMAN的PUT请求: -
请求从浏览器发送:
我的代码与您的代码相同: -
app.put('/add-movie', function (req, res) {
var params = {
TableName:"Movies",
Item:{
"yearkey": {"N" : req.query.yearkey},
"title": {"S" : req.query.title}
}
};
dynamodb.putItem(params, function(err, data) {
if(err) {
console.log(err);
res.send("Put is failed...");
}
else {
console.log(JSON.stringify(data));
res.send("Put is successful...");
}
});
});