【发布时间】: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