Javascript 在Express.js中使用PUT方法

Javascript 在Express.js中使用PUT方法,javascript,node.js,http,express,Javascript,Node.js,Http,Express,我正在尝试对一个Express.js应用程序实现更新功能,我想使用PUT请求发送新数据,但我一直在使用PUT时出错。从我所读到的一切来看,这只是一个使用app.put的问题,但这是行不通的。我的routes文件中包含以下内容: send = function(req, res) { req.send(res.locals.content); }; app.put('/api/:company', function(res,req) { res.send('this is an

我正在尝试对一个Express.js应用程序实现更新功能,我想使用PUT请求发送新数据,但我一直在使用PUT时出错。从我所读到的一切来看,这只是一个使用app.put的问题,但这是行不通的。我的routes文件中包含以下内容:

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

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

当我使用postman发出PUT请求时,我得到一个“cannotput/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功能,我刚才在这里用它为你的公司交换文章。相同。

您是否一直在查看标题信息?
因为头应该是
header['content-type']='application/json'
则只有您才能在服务器端(node express)获得更新对象,否则,如果您的内容类型为纯文本/htm,您将在您的节点应用程序中获得
空请求正文

此外,如果您想在
put
delete
(to
get
address)中重定向,则无法使用正常的
res>重定向(“/path”)
,您应该使用
res.redirect(303,/path')
。()


如果没有,您将得到
无法放入
错误。

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

将回调顺序更改为
函数(req,res)

不要使用
function(res,req)

postman,500?404中显示了什么错误?您是否尝试过使用methodOverride()?回调中的
req
res
参数的顺序是否错误?应该是
function(req,res)
?@Akurn,是的,应该是req res。