我正在为项目使用Angular 1.3和node.js 0.12.2。我正在使用
命中node.js api$http.post("url", request_data){}
在服务器端使用:
console.log(req.body)
但每次调用api时,它都会为{}
获取空对象request_data
,无法解决问题所在。我曾经使用body_parser
这样:
var bodyParser = require('body-parser');
app.use(bodyParser.json()); // support json encoded bodies
app.use(bodyParser.urlencoded({ extended: true })); // support encoded bodies
还尝试在angular $ http中添加内容类型标题:
headers : {'Content-Type': 'applicatio n/x-www-form-urlencoded'}
但没有获得请求数据。
编辑:
Node.js代码:
router.post('/url',function(req,res){
console.log(req.body)
})
注意:Developer Tool的网络标签显示我正在发送的请求标头中的数据,但node.js服务器未在req.body
中接收。
在POSTman中获取数据是正确的响应。
答案 0 :(得分:1)
some ideas :
app.use('/api', router);
Content-Type
: application/x-www-form-urlencoded --> 'var1="SomeValue"&var2='+SomeVariable
application/json;charset=UTF-8 --> {var1:"SomeValue", var2:SomeVariable}
$http
more explicitly : $http({
url: '...',
method: 'POST',
headers: {
'Content-Type': 'application/x-www-form-urlencoded'
},
data: 'var1="SomeValue"&var2='+SomeVariable
});
答案 1 :(得分:0)
我最好的猜测是你的有角$ http请求网址指向一个不好的终点。
<强> Angularjs 强>
// data to post nodejs server
var _data = {
'message': 'Can I help you?'
};
// angularjs $http post request
$http.post('/api/url', _data).then(function(respond){
// if success
console.log(respond);
}, function(error){
// if an error
console.error(error);
});
<强>的NodeJS 强>
// router function
function something(req, res) {
// console.log the request body
console.log(req.body);
// respond JSON object
var _respond = {
'status': 200
};
// expressjs respond a JSON with status code 200
res.status(200).json(_respond);
}
// register route URL
router.post('/api/url', something);
请注意,代码端点网址相同: / api / url
因此,作为上述问题中的代码示例,您缺少/