【问题标题】:Express.js req.body is returning nothingExpress.js req.body 没有返回任何内容
【发布时间】:2016-06-23 23:30:29
【问题描述】:

我正在学习 node 和 express 为我将要创建的 angular 应用程序创建一个 api。

当我尝试发布某些内容时,req.body 似乎是空白的。

这是我的 server.js 文件

'use strict';

var express = require('express'),
  app = express(),
  mongoose = require('mongoose'),
  router = require('./api'),
  bodyParser = require('body-parser');

mongoose.connect('mongodb://localhost/my_db');

app.use(bodyParser.json());
app.use('/api', router);

app.get('/', function(req, res) {
  res.render(__dirname + '/index.jade');
});

app.listen(3001, function() {
  console.log('Listening on port 3001');
});

这是我的 api/index.js 文件:

'use strict';

var express = require('express'),
    Todo = require('../models/todo'),
    router = express.Router();

router.get('/todos', function(req, res) {
  Todo.find({}, function(err, todos) {
    if(err) {
      return console.log(err);
    }
    res.json({todos: todos});
  });
});

router.post('/todos', function(req, res) {
  var todo = req.body;
  res.json({todo: todo});
});


module.exports = router;

当我使用邮递员将其发布到http://localhost:3001/api/todos时:

{
    'name': 'Walk the Dog',
    'completed': false
}

我的回答是:

{
  "todo": {}
}

我不明白为什么这是空白,感谢任何帮助。

更新

原来我在邮递员中发布了text,而不是JSON

【问题讨论】:

  • 我还没有设置角度,我先做 API,我使用一个名为 postman 的应用程序发布。原来这是我的错,我发布的是text 而不是JSON 我会更新我的问题。
  • 您是使用邮递员application/json 发送邮件的吗?或者作为默认的形式编码?
  • 您是否检查过您是否在服务器上收到了它?我的意思是 console.log 那个?

标签: javascript angularjs node.js express


【解决方案1】:

在你的 server.js 文件中使用它

app.use(bodyParser.urlencoded({extended:true}));
app.use(bodyParser.json());

【讨论】:

    猜你喜欢
    • 2018-07-30
    • 2018-04-05
    • 1970-01-01
    • 2021-01-01
    • 2018-12-25
    • 2020-01-27
    • 2019-04-14
    • 2018-02-18
    • 1970-01-01
    相关资源
    最近更新 更多