2016-02-01 107 views
0

我有以下代码:Node.js的表达POST请求没有得到参数

var express = require('express'); 
var app = express(); 
var bodyParser = require('body-parser'); 
app.use(bodyParser.urlencoded({ extended: false })); 

app.post('/rasp', function(req, res) { 
res.send("received"); 
res.send(req.body.data); 
}); 
app.listen(process.env.PORT || 5000); 

我用邮差,看看它是否工作,显然是“接受”文本发送回来,但数据参数是空白。可能是什么问题呢?

+0

你仍然有,如果你删除'res.send( “接收”)这个问题;'?如果你添加'console.log(req.body);'结果是什么? –

+1

“我用POSTMAN来查看它是否有效” - 如何?您确实发送了什么要求? – Quentin

回答

1

基本上,客户端发送一个请求,并等待来自您的服务器的单个响应。一旦客户收到该响应,就停止等待另一个响应。此外,Express只允许您为每个请求发送一个响应(与上面解释的客户端一起进行)。您可能可以更改此设置,但我从来没有处理过它,所以我的答案将仅限于此知识。

您的服务器正在执行res.send('received');并处理响应。您不能再次致电res.send。当您尝试第二次呼叫时,您应该在服务器上发生错误。

您应该发送第一个(也是唯一的)res.send()客户端需要的所有数据。

服务器响应不应该像日志记录一样处理(例如:发送'received','analyze'等)。保持日志分离。客户不想知道所有额外信息,只需要预期的数据响应。

+0

是的,这是问题,现在它工作正常。谢谢! – Vali79

0
var express = require('express'); 
var app = express(); 
var bodyParser = require('body-parser'); 
app.use(bodyParser.urlencoded({ extended: false })); 
app.listen(process.env.PORT || 5000); 

app.post('/rasp', function(req, res) { 

    res.send({received:true,data:req.body}); 

}); 

可以尝试这一个,在这里写响应

0

我相信你的帖子正文是“data = Some Value”。

如果你想发送多个数据块,你应该使用res.write和res.end。在你的代码更改以下行

res.send("received"); 
res.send(req.body.data); 

res.write("received"); 
res.end(req.body.data);