【发布时间】:2016-04-07 07:26:48
【问题描述】:
我有以下资源定义:
myservices.factory('User', ['$resource',
function($resource){
return $resource('/user/:screenName', {}, {
whoami: {
url: '/user',
method: 'GET',
isArray: false,
params: {
op: 'whoami'
}
},
query: {
url: '/user',
method: 'GET',
isArray: true
},
get: {
method: 'GET',
isArray: false
},
update: {
method:'GET',
params: {
op: 'update'
},
isArray: false,
},
delete: {
method:'GET',
params: {
op: 'delete'
},
isArray: false,
}
});
}]);
我认为它会将screenName 作为 URL 的一部分传递。不幸的是,这不会发生。
控制器代码如下:
var user = new User();
user.firstname = $scope.selectedUser.firstName;
user.lastname = $scope.selectedUser.lastName;
user.screenName = $scope.selectedUser.screenName;
user.password1 = $scope.selectedUser.password1;
user.password2 = $scope.selectedUser.password2;
user.roles = $scope.selectedUser.roles;
user.maximalCalories = $scope.selectedUser.maximalCalories;
user.$update();
其实它通过了:
GET http://localhost:8080/user?op=update HTTP/1.1
Host: localhost:8080
...
Accept: application/json, text/plain, */*
...
Referer: http://localhost:8080/app/index.html
即除了显式参数,它不传递任何参数。
UDPATE
如果我这样做
User.$update(
{
firstname : $scope.selectedUser.firstName,
lastname : $scope.selectedUser.lastName,
screenName : $scope.selectedUser.screenName,
password1 : $scope.selectedUser.password1,
password2 : $scope.selectedUser.password2,
roles : $scope.selectedUser.roles,
maximalCalories : $scope.selectedUser.maximalCalories,
}
);
我得到一个异常TypeError: User.$update is not a function
更新 2
显然,Angular 将函数 $update 添加到对象并将函数 update 添加到类,如果我在 LHS 有对象,它将仅通过 POST...
【问题讨论】:
-
你能看看开发者控制台网络标签吗..看看请求正文..它必须在正文中传递对象..
-
当然,因为您没有将
screenName传递给资源调用。 -
@dfsq 不应该从对象
user中获取它吗? -
@PankajParkar 它没有。我在fiddler中看到request,没有body,是GET请求。
标签: javascript angularjs rest angular-resource