在Express.js中使用PUT方法

时间:2013-09-03 21:37:35

标签: javascript node.js http express

我正在尝试为Express.js应用程序实现更新功能,我想使用PUT请求发送新数据,但我一直在使用PUT收到错误。从我读过的所有内容来看,这只是使用app.put的问题,但这不起作用。我的路线文件中有以下内容:

send = function(req, res) { 
    req.send(res.locals.content);
};

app.put('/api/:company', function(res,req) {
    res.send('this is an update');
}, send);

当我使用邮递员发出PUT请求时,我得到一个“不能PUT / api / petshop”作为错误。我不明白为什么我不能PUT,或者出了什么问题。

4 个答案:

答案 0 :(得分:12)

您可能缺少实际的更新功能。您有put路径将结果返回给客户端但在告诉数据库更新数据时缺少该部分。

如果您正在使用mongodb和express,您可以编写如下内容:

app.put('/api/:company', function (req, res) {
    var company = req.company;

    company = _.extend(company, req.body);

    company.save(function(err) {
    if (err) {
        return res.send('/company', {
            errors: err.errors,
            company: company
        });
    } else {
        res.jsonp(company);
    }

}); 

mean stack project可能对您有所帮助,因为它涵盖了我刚刚在这里为您的公司交换文章时使用的CRUD功能。同样的。

答案 1 :(得分:0)

此外,如果您要重定向到putdelete(到get地址),则不能使用普通的res.redirect('/path'),而应使用{{1} }。 (source

否则,您会收到res.redirect(303, '/path')错误。

答案 2 :(得分:0)

更改回调函数(req,res)的顺序。 不使用function(res,req)。

答案 3 :(得分:-3)

您是否检查过标题信息?因为标头应该是header['content-type'] = 'apllication/json';,所以只有你将在服务器端(node-express)获得更新对象,否则如果你有内容类型纯文本/ htm,那么你将在节点中得到empty req.body。 / p>