【发布时间】:2014-07-30 18:39:50
【问题描述】:
鉴于以下服务:
vdgServices.factory('UserService', ['$resource',
function($resource) {
return $resource('api/users/:id', {}, {
doGet: {
method: 'GET',
params: { id: '@userId' }
},
doPost: {
method: 'POST',
params: { id: '@userId' }
},
doPut: {
method: 'PUT',
params: { id: '@userId' }
},
doDelete: {
method: 'DELETE',
params: { id: '@userId' }
}
});
}]);
我观察到以下请求的 URL:
var params = { userId: 42 };
var onSuccess = function() { console.log("OK"); };
var onError = function() { console.log("KO"); };
UserService.doGet(params, onSuccess, onError);
// requests api/users?userId=42
UserService.doPost(params, onSuccess, onError);
// requests api/users/42
UserService.doPut(params, onSuccess, onError);
// requests api/users/42
UserService.doDelete(params, onSuccess, onError);
// requests api/users?userId=42
谁能解释为什么:id URL 参数有时会被42 替换,有时不会?
理想情况下,我希望将其替换为任何方法,即每次请求的 URL 都变为“api/users/42”。
【问题讨论】:
标签: javascript angularjs rest url-parameters ngresource