req.body
始终为空。我不确定自己做错了什么?我尝试将内容类型标题添加为json,但也没有做任何事情。有人能指引我走向正确的方向吗?谢谢
编辑:为了澄清目的,我的Angular前端成功点击了后端函数,但是req.body是空的。如果我理解了一切,如果我正在使用'身体解析器'图书馆,应通过邮件通过“req.body”传递。我只是没有看到,但我不确定为什么。
EDIT2:我的app.js中有正文解析器代码但是index.js文件中的后端路由,这与它有什么关系吗?
EDIT3:app.js http://pastebin.com/9vNgf0Nd index.js http://pastebin.com/icLa3e2X
ANGULAR FRONTEND
service.registerAccount = function(account) {
console.log(account); //account = { userName: 'test', password: 'hello' }
return $http({
method: 'POST',
url: '/register',
data: { account: account },
headers: {'Content-Type': 'application/json'}
});
}
BACKEND(app.js)
var bodyParser = require('body-parser');
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: true }));
BACKEND(index.js)
var express = require('express');
var router = express.Router();
router.post('/register', function(req, res) {
console.log(req.body);
};
答案 0 :(得分:2)
请删除此行
app.use(bodyParser.urlencoded({ extended: true }))
此外,
app.use(bodyParser.json());
必须在app.use('/', routes);
之前调用
并确保将Content-Type:application / json添加到请求标头
答案 1 :(得分:1)
如果添加内容类型会怎样?
service.registerAccount = function(account) {
console.log(account); //account = { userName: 'test', password: 'hello' }
return $http({
method: 'POST',
url: '/register',
data: { account: account },
headers: {
'Content-Type': 'application/json'
}
});
}
答案 2 :(得分:0)
UI代码没有任何问题。不确定router
是什么,所以你可以尝试这个或发布路由器的代码。
试试这个(这对我有用)或者你也可以使用你的路由器:
app.post('/register', function (req, res) {
console.log(req.body);
res.send('welcome, ' + req.body.account.username)
});
你错过了:
var app = express();
app.use(router);
如果您想要用户路由器,请参考以下示例:
更新完整代码:
var express = require('express');
var router = express.Router();
var app = express();
app.use(router);
router.post('/register', function(req, res) {
console.log(req.body);
};
app.route('/register')
.post(function (req, res) {
console.log(req.body);
res.send('welcome, ' + req.body.account.username)
})
答案 3 :(得分:0)
试试这个
var express = require('express');
var app = express();
var bodyParser = require('body-parser');
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: true }));
app.post('/register', function(req, res) {
console.log(req.body);
});
var server = app.listen(8081, function () {
var host = server.address().address
var port = server.address().port
console.log("Example app listening at http://%s:%s", host, port)
});
然后从提示符执行此操作:
$ curl localhost:8081/register -v --data "{\"name\":\"test\",\"password\":\"hello\"}" --header "Content-Type: application/json"
这适合我!