我正在尝试卷曲我的本地服务器来创建一条消息,但我遇到了奇怪的错误。我能够使用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)
);
});
答案 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