发布请求因某些curl命令而失败,但对于其他命令则失败

时间:2019-02-12 19:56:37

标签: mysql sql node.js express curl

我在节点中设置了一个发布路线,如下所示:

router.route('/').post((req, res) => {
  pool.query('INSERT INTO users SET ?', req.body, (err, result) => {
      if (err) throw err;
      res.status(201).send(`User added with ID: ${result.insertId}`);
  });
});

如果我使用此curl命令,它可以完美运行并添加了用户:

curl -d "username=Dinesh Chugtai&email=dinesh@piedpiper.com&password=test" http://localhost:4000/users

但是,通过Postmate发送发帖请求时,出现此错误: ER_PARSE_ERROR: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1

Postmate还会生成一个curl命令,该命令是这样的:

curl -X POST 'http://localhost:4000/users?username=johnsmith&email=john@smith.com&password=password'

如果我在命令行中手动输入该错误,也会给我同样的错误。

为什么一个curl命令起作用而另一个不起作用?我的发布路线设置正确吗?

1 个答案:

答案 0 :(得分:1)

在Node.js路由定义中,您希望在req.body中获取数据,该数据是POST请求的正文。

  • 第一个curl之所以有效,是因为您要将数据放入正文
  • 第二个失败,因为您正在将数据放入查询参数(位于URL本身中)