Node.js表示POST请求没有获取参数

时间:2016-02-01 16:55:30

标签: javascript node.js http post express

我有以下代码:

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);

我使用POSTMAN来查看它是否有效,显然"收到"文本被发回,但数据参数为空。可能是什么问题?

3 个答案:

答案 0 :(得分:1)

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

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

您应该在第一个(仅限)res.send()中发送客户端所需的所有数据。

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

答案 1 :(得分: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});

});

你可以尝试这个吗并在这里写回复

答案 2 :(得分:0)

我相信你的帖子是"数据=有些价值"。

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

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

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