无法在Node.js res.body中获取$ http.post请求数据

Rah*_*ore 8 json http-post node.js angularjs

我正在为项目使用Angular 1.3和node.js 0.12.2.我正在使用node.js api

$http.post("url", request_data){}
Run Code Online (Sandbox Code Playgroud)

在服务器端使用这个:

console.log(req.body)
Run Code Online (Sandbox Code Playgroud)

但每次的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
Run Code Online (Sandbox Code Playgroud)

还尝试在angular $ http中添加内容类型标头:

headers : {'Content-Type': 'applicatio n/x-www-form-urlencoded'}
Run Code Online (Sandbox Code Playgroud)

但没有得到请求数据.

编辑:

Node.js代码:

router.post('/url',function(req,res){
    console.log(req.body)  
})
Run Code Online (Sandbox Code Playgroud)

注意:Developer Tool的网络选项卡显示正在发送的请求标头中的数据,但node.js服务器未接收到req.body.在POSTman中获取数据是正确的响应.

小智 0

我最好的猜测是您的角度 $http 请求 URL 指向一个错误的端点。

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);
});
Run Code Online (Sandbox Code Playgroud)

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);
Run Code Online (Sandbox Code Playgroud)

请注意,代码端点 URL 相同:/api/url

因此,作为上述问题中的代码示例,您缺少 /