我有以下代码:
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来查看它是否有效,显然"收到"文本被发回,但数据参数为空。可能是什么问题?
答案 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);