Parsing POST data with body-parser in Node.js app

I am trying to build a simple Node.js app which will parse data passed to it as POST requests from my AngularJS app. Below is the code used in my AngularJS app and my Node.js app. Problem I am facing is that I've searched the web trying to find how to parse (data and header) information passed in POST requests but failed to find any example, so any help with an example of parsing (data and header) passed in POST requests will help me a lot. Thanks.

Note: I am using express 4.1.2, body-parser 1.8.0.

Node app:

var express = require('express');
var http = require('http');
var bodyParser = require('body-parser');

var app = express();
app.set('port', process.env.PORT || 3000);
app.use(bodyParser.json());

app.post('/', function (req, res) {
  console.log(req.body);
  res.send(200);
});

http.createServer(app).listen(app.get('port'), function(){
  console.log('Server listening on port ' + app.get('port'));
});

POST request code

          var deferred = $q.defer();

          var dataObj = {};
          dataObj.name = 'Chan';
          dataObj.email_address = 'email@domain.com';

          var myToken = '1234567890';

          $http({ method:'POST',                     
                  url: '/',
                  data: dataObj,
                  headers: { 'Token' : myToken
                  }
          }).success(function(data,status,headers,config){
                deferred.resolve(data);
          }).error(function(data,status,headers,config){ 
                deferred.reject(status);
          });

          return deferred.promise; 

If you're setting data to a plain js object, angular is interpreting that as a urlencoded form with the various keys and values in that object.

So there's two possible fixes here. One is to add something like app.use(bodyParser.urlencoded({ extended: false })); after app.use(bodyParser.json());

The second possible fix is to change your $http call to post JSON instead of urlencoded data. For that, change data: dataObj, to data: JSON.stringify(dataObj), and add 'Content-Type': 'application/json' to your headers so that it looks like this:

headers: {
  'Token' : myToken,
  'Content-Type': 'application/json'
}