.get()Url不是我所期望的

时间:2013-02-11 14:22:25

标签: angularjs

我第一次尝试angular.js。 我的休息服务配置如下:

get('/api/users') //returns a JSON Array with all the users
get('/api/users/:id') //returns a JSON object with the requested ID

我的角度控制器设置如下:

UserCtrl.factory('User', function($resource) {
    return $resource('/api/users/:id', { id: '@id' }, { update: { method: 'PUT' } });
});

var EditCtrl = function($scope, $location, $routeParams, User){
    var id = $routeParams._id;
    $scope.user = User.get({id: id});
};

我的问题是,当我跑

User.get({id: id})

请求的URL是:

http://localhost:8080/api/users?id=389498473294

我希望它是

http://localhost:8080/api/users/389498473294

我可以使用$http来做,但我认为.get()应该可以做到这一点......

感谢

1 个答案:

答案 0 :(得分:4)

使用带前缀的@定义id参数的默认值,这意味着必须从作为参数传递给调用的对象中获取该值。在get调用中没有发送对象,因此id参数被赋值为null值。 作为已分配的id参数,您传递的值将作为查询参数附加。 有关详细信息,请参阅Usage / Param默认段落下的angular documentation。 声明服务的正确方法应该是:

  

UserCtrl.factory('User',function($ resource){       return $ resource('/ api / users /:id',{id:''},{update:{method:'PUT'}}); });