3

我正在使用 AngularJS 资源向运行 express 的节点 js 服务器发布 ajax 帖子。但是我无法访问 NodeJS 端的 post 有效负载参数。

我有一个服务设置:

angular.module('app.services', ['ngResource'])
    .factory('PostService', function($resource) {
        return $resource('/postTest');
    });

在控制器中我有:

function UserCtrl($scope, PostService) {
    //query for the users
    $scope.testPost = function() {
        var stuff = {firstname: 'some', lastname:'person'};
        PostService.save(stuff,function(data) {
            console.log('called save on PostService');
        });
    };
}

我可以在 http 标头中看到有效负载:

{"firstname":"some","lastname":"person"}

但是,当我到达 NodeJS 路由来处理它时,我不确定如何访问参数:

(从节点控制台输出):内部测试内容 req.params 未定义

app.post('/postTest', function(req, res) {
        console.log('inside test stuff');
        console.log('req.params ' + req.param('stuff'));
    })

我在以下位置创建了一个小提琴:http: //jsfiddle.net/binarygiant/QNqRj/

谁能解释如何在我的 NodeJS 路由中访问帖子传递的参数?

提前致谢

4

2 回答 2

3

如果 "{"firstname":"some","lastname":"person"}" 在 json 中的帖子正文中?

你会以不同的方式访问它。

使用express.bodyParser(),req.body.firstname会得到你的名字

app.use(express.bodyParser());

然后

app.post('/postTest', function(req, res) {
    console.log('inside test stuff');
console.log(req.body.firstname);
})
于 2013-02-26T22:45:52.457 回答
0

您需要在您的应用程序中设置正文解析器

例如在 ExpressJs 4 中,

app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: false }));
于 2015-01-17T18:55:32.900 回答