【问题标题】:Node JS + Put request does not has bodyNode JS + Put 请求没有正文
【发布时间】:2018-07-18 10:31:01
【问题描述】:

我开始探索 NodeJS 并研究 API 的示例。我能够在发布请求中获得req.body,它工作正常,但是当我创建要放置的函数时,我的req.body{} 一样为空。 我的代码如下:

发布有效的请求:

router.post('/',  function(req, res) {
   const name = req.body.username
   const address = req.body.address
   const phone = req.body.phone
   const values = [name, address, phone]
   const sql = "INSERT INTO userInfo (username, address, phone) VALUES (?, ?, ?)";
   res.locals.connection.query(sql, values, function (error, results, fields) {
            if(error){
                res.send(JSON.stringify({"status": 500, "error": error, "response": null}));
            } else {
                const value = {"status":"success", "userId": results.insertId}
                res.send(JSON.stringify({"status": 200, "error": null, "response": value}));
            }
        });
});

我的 put 请求不起作用:

router.put('/',  function(req, res) {
   const userId = req.body.userId
   const name = req.body.username
   const address = req.body.address
   const phone = req.body.phone
   const values = [name, address, phone, userId]
   console.log(req.body);
   const sql = "UPDATE userInfo set username =?, address = ?, phone = ?  WHERE userId = ?";
   res.locals.connection.query(sql, values, function (error, results, fields) {
            if(error){
                res.send(JSON.stringify({"status": 500, "error": error, "response": null}));
            } else {
                const value = {"status":"success", "userId": results.insertId}
                res.send(JSON.stringify({"status": 200, "error": null, "response": value}));
            }
        });
});

请建议我,这有什么问题以及如何获得 req.body。

【问题讨论】:

    标签: node.js api atom-editor put


    【解决方案1】:

    对于更新功能,我在处理 API 时也遇到了同样的问题。这两天一直摸不着头脑才发现问题。最终,我使用了 post 功能,它对我有用。

    只需使用router.post 而不是router.put

    【讨论】:

    • 是的,它会工作,但想探索,为什么它不工作?
    • 实际上,POST 用于创建数据而 PUT 用于更新的广泛接受的概念并不完全正确。最好使用 PUT 进行创建和 POST 进行更新。看到这个,stackoverflow.com/a/2691891/10086490
    • 要确认这一点,您应该尝试相反的方式并看到它的工作。
    • 使用正文解析器作为中间件工作......
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-11-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-13
    • 1970-01-01
    • 2022-08-06
    相关资源
    最近更新 更多