簡體   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