繁体   English   中英

在 Express.js 中使用 PUT 方法

[英]Using the PUT method with Express.js

我正在尝试为 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,或者出了什么问题。

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

如果您使用 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);
    }

}); 

意味着堆栈项目可能会帮助你,因为它涵盖了这个 CRUD 功能,我刚刚在这里使用它为你的公司交换他们的文章。 彼此彼此。

您的回调函数的参数顺序错误。

将回调的顺序更改为function(req, res) 不要使用function(res, req)

此外,如果您想在putdelete重定向(以get地址),则不能使用正常的res.redirect('/path') ,您应该使用res.redirect(303, '/path')代替。 来源

如果没有,您将收到Cannot PUT错误。

你有没有检查过你的标题信息? 因为 header 应该是header['content-type'] = 'application/json'; 那么只有你会在服务器端(node-express)获得更新对象,否则如果你的内容类型是纯“text/htm”,你的节点应用程序中会得到empty req.body

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM