用于表达API路由+发布数据的Angular服务

时间:2014-08-03 04:48:22

标签: node.js angularjs express

我正在将我的一个网站(http://maskedarmory.com)从LAMP(使用Laravel 4 MVC)转换为MEAN堆栈,这是迄今为止的一段旅程。

我已设法启动并运行着陆页,并将输入POST到Angular控制器,我将其路由到。

现在,我遇到的问题是让服务通过Angular中的POSTed数据发送到Express API。我一直在/ api / character URL路径上保留404 Not Found错误。

另外,如何访问工厂传递的Angular端的'characterData'变量?因为我试图在服务器端的'characterData'变量上执行console.log,我确信这超出了范围。

app / routes.js(快速路由)

// 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(快速路由)

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
    });

};

如果我在API的$ http.post之前执行console.log,'characterData'会包含它应该具有的所有信息。

我确信这是某种类型的路由问题,但如果能搞清楚,我会被诅咒。

提前感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

试试这个:

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''); 
});