Curling Express服务器失败,有多个参数

时间:2015-04-13 18:59:30

标签: node.js curl express

我正在尝试卷曲我的本地服务器来创建一条消息,但我遇到了奇怪的错误。我能够使用curl创建一个用户就好了:

$curl --data userToken='awdawd' localhost:3000/usertoken
>>>created

但是当我尝试发布到/ messages路由时,我得到以下内容:

$curl -data x="10"&y="10"&z="10"&message="hello"&userToken="mrTony" http://localhost:3000/messages

>>>[1] 26248
>>>[2] 26249
>>>[3] 26250
>>>[4] 26251
>>>-bash: http://localhost:3000/messages: No such file or directory
>>>[2]   Done                    y="10"
>>>[3]-  Done                    z="10"
>>>[4]+  Done                    message="hello"
>>>curl: (6) Could not resolve host: x=10

>>> [1]+  Exit 6                  curl -data x="10"

我认为可能存在内容类型问题,所以我尝试将内容类型包含为application / json,但我仍然得到相同的错误。

这是我的快递服务器路线:

  //input: {userToken: string}
  router.post('/usertoken', function (req, res) {
    var token = req.body.userToken;
    models.createUser(token).then(
      util.resolvePOST.bind(this, req, res),
      util.rejectPOST.bind(this, req, res)
      );
  });

  //input: {x: float, y: float, z: float, message: string, userToken: string}
  router.post('/messages', function(req, res) {
    console.log('does not work', req.body);
    models.createMessage(req.body).then(
      util.resolvePOST.bind(this, req, res),
      util.rejectPOST.bind(this, req, res)
      );
  });

3 个答案:

答案 0 :(得分:1)

这不是你的快递应用程序的问题,而是你调用curl的方式。你的shell正在看&并将内容放到后台。因此,您需要确保它们都包含在引号内,以便shell不处理它们。

请改为尝试:

curl "http://localhost:3000/messages?x=10&y=10&z=10&message=hello&userToken=mrTony"

答案 1 :(得分:1)

“&”在你的行中令人困惑的linux。基本上,当您在命令行中使用它时,它会告诉它将命令作为后台进程运行。

你需要用引号括起所有内容,试过吗?:

$curl -data 'x="10"&y="10"&z="10"&message="hello"&userToken="mrTony"' http://localhost:3000/messages

答案 2 :(得分:0)

为了跟进这里的两个正确答案,你应该能够反斜杠逃避&符号。

$curl -data x="10"\&y="10"\&z="10"\&message="hello"\&userToken="mrTony" http://localhost:3000/messages