【问题标题】:Node.js express POST request not getting parametersNode.js 表达 POST 请求未获取参数
【发布时间】:2016-02-01 16:55:29
【问题描述】:

我有以下代码:

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 来查看它是否有效,并且显然“收到”的文本被发回,但 data 参数为空白。可能是什么问题?

【问题讨论】:

  • 如果你删除res.send("received");,你还有这个问题吗?如果你添加console.log(req.body);,结果是什么?
  • “我使用 POSTMAN 来查看它是否有效” — 怎么样?您到底发送了什么请求?

标签: javascript node.js http post express


【解决方案1】:

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

您的服务器正在执行res.send('received'); 并处理响应。您不能再拨打res.send。当您尝试第二次调用时,您的服务器上应该会出现错误。

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

不应像记录日志那样处理服务器响应(例如:发送“已接收”、“正在分析”等)。保持日志记录分开。客户端不想知道所有额外的信息,它只想要预期的数据响应。

【讨论】:

  • 是的,这就是问题所在,现在它可以正常工作了。谢谢!
【解决方案2】:
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});

});

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

【讨论】:

    【解决方案3】:

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

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-11-26
      • 2021-08-08
      • 1970-01-01
      • 2013-10-02
      • 1970-01-01
      • 1970-01-01
      • 2011-12-16
      • 2019-07-04
      相关资源
      最近更新 更多