Angular Service to Express API Route + Posting Data

I am in the process of converting one of my sites (http://maskedarmory.com) from LAMP (using Laravel 4 MVC) over to the MEAN stack and it has been quite a journey thus far.

I have managed to get the landing page up and running and the input POSTing to Angular controller that I have it routed to.

Now, the problem I am having is getting the service to send over the POSTed data that is in Angular over to the Express API. I keep keeping a 404 Not Found error on the /api/character URL path.

Also, how do I access the 'characterData' variable that is on the Angular side that is being passed over by the factory? Because I am trying to do a console.log on the 'characterData' variable on the server side and I am sure that that is out of scope.

app/routes.js (Express Routing)

// public/js/services/ArmoryService.js
angular.module('ArmoryService', []).
    factory('Armory', function($http) {

    return {
        // Get the specified character by its profile ID.
        get : function(id) {
            return $http.get('/api/character/' + id);
        },

        // call to POST and create a new character armory.
        create : function(characterData) {
            return $http.post('/api/character', characterData);
        }
    }
});

app/routes.js (Express Routing)

module.exports = function(app) {

    app.post('/api/character', function(req, res) {
          console.log(characterData);
    });

    app.get('/', function(req, res) {
        res.sendfile('./public/index.html'); // load our public/index.html file
    });

};

If I do a console.log before the $http.post to the API, 'characterData' has all of the information it should.

I am sure that this is a routing issue of some type, but I will be damned if I can figure it out.

Thanks in advance for your help!

Try this:

app.post('/api/character', function(req, res) {
  console.log(JSON.stringify(req.body));
  res.status(200).send('whatever you want to send back to angular side'); 
});

app.get('/api/character/:id', function(req, res) {
  console.log(req.params.id);
  res.status(200).send('whatever you want to send back to angular side''); 
});