如何在Node / Express中接收帖子数据?

时间:2014-05-21 05:05:10

标签: node.js express

我无法弄清楚为什么将信息发送到我的应用的帖子请求总是显示为空(为简洁而省略了一些)。

var express = require('express');
var routes = require('./routes');
var user = require('./routes/user');
var http = require('http');
var path = require('path');

var app = express();

// all environments
app.set('port', process.env.PORT || 3000);
app.set('views', path.join(__dirname, 'views'));
app.set('view engine', 'jade');
app.use(express.favicon());
app.use(express.logger('dev'));
app.use(express.json());
app.use(express.urlencoded());
app.use(express.methodOverride());
app.use(app.router);
app.use(require('less-middleware')(path.join(__dirname, 'public')));
app.use(express.static(path.join(__dirname, 'public')));
app.use(express.bodyParser());

app.post('/sendmail', function(req, res) {
    console.log(req.body);
});

http.createServer(app).listen(app.get('port'), function(){
  console.log('Express server listening on port ' + app.get('port'));
});

enter image description here

发布到该URL会在控制台中记录:

Express server listening on port 3000
{}

是什么给出了?

3 个答案:

答案 0 :(得分:1)

bodyParser中间件基于POST内容和mime类型设置req.body - 如果*/json使用JSON.parse,或者如果type为*/urlencoded则使用urldecode。不支持其他体型。如前所述,您需要在Postman中设置标题或设置帖子类型

答案 1 :(得分:1)

这不完全是您正在寻找的解决方案(对不起,不要仅仅投票给我这个:) :)但我仍然希望与邮递员,节点和自动化测试框架分享我自己的经验,希望它至少可以让你继续你正在做的事情。

根据我的经验,邮递员有问题,或者我错过了一些重要的信息。让我解释一下,当我刚刚开始使用邮递员时,我能够成功地将数据发布到我的节点应用程序,但后来它突然拒绝按预期工作(编辑:你在这里遇到同样的问题......' body&# 39;到达时没有数据)...是的我知道关于标题类型的位和三重检查邮递员的设置和什么不是。

由于未能弄清楚这个应用程序出了什么问题,并且不愿意浪费任何时间,我回过头来使用一个简单的框架,并在HTTP库的帮助下使用了一种古老的测试方法。

使用mochasupertest的简单易用组合,可让您掌控一下您想要测试应用的内容和方式,并基本完全模拟与您的应用互动的各个方面以你需要的顺序等等......

答案 2 :(得分:0)

您需要从" Text"更改您的客户到" JSON"在位于POST json数据上方的组合框中

enter image description here