无法将带有PUT的项目添加到dynamodb表:node.js aws-sdk

时间:2016-10-23 04:06:26

标签: node.js amazon-dynamodb

我正在尝试使用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请求的原因是什么?非常感谢任何帮助。

1 个答案:

答案 0 :(得分:2)

默认情况下,当从浏览器点击URL时,请求将作为HTTP GET请求发送。如果不使用插件或工具,您无法直接从浏览器发送GET请求。

这是使用像POSTMAN这样的工具或任何其他插件(如Firefox插件)来测试适用于不同HTTP方法(如POST,PUT等)的REST服务的主要原因。

1)我想当你从POSTMAN点击URL时,你会选择PUT方法。

2)如果在POSTMAN中选择GET方法,则会出现相同的错误。

请参阅下面的屏幕截图。从POSTMAN发送请求会抛出相同的错误。

来自POSTMAN的GET请求: -

GET request from POSTMAN

来自POSTMAN的

PUT请求: -

PUT request from POSTMAN

请求从浏览器发送:

Request send from browser

我的代码与您的代码相同: -

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...");
        }

    }); 
});