我正在使用Angular的$资源与API进行交互,并在该资源上创建自定义方法。其中一种方法是POST,当我尝试使用它时,它会发送整个资源,而不仅仅是我试图发布到API的属性。我不认为这是$ resource服务的预期行为,但是,我可能会遗漏一些东西。
以下是代码:
服务:
angular.module('adminApp')
.factory('Framework', function($resource) {
return $resource('/api/frameworks/:id', {id: '@id'}, {
'update': {
method: 'PUT'
},
'getRequiredLicenses': {
method: 'GET',
url: '/api/frameworks/:id/required_licenses',
isArray: true
},
'addRequiredLicenses': {
method: 'POST',
url: '/api/frameworks/:id/required_licenses'
},
'removeRequiredLicense': {
method: 'DELETE',
url: '/api/frameworks/:id/required_licenses/:license_id'
}
});
});
我在说它的地方:
scope.addLicensesToFramework = function() {
scope.framework.$addRequiredLicenses(null, {
required_licenses: Object.keys(scope.selectedLicenses) // returns an array of ints
});
}
(请注意,这是一个指令。scope.framework
是框架资源的实例)
发送此请求时,以下是有效负载中包含的内容:
我的意图是只在有效负载中传递{'required_licenses': [12345,1236]}
,而我似乎无法弄清楚为什么它将整个资源作为正文发送。 (事实上,它根本不发送,只发送原始资源)
任何见解都会非常有用,谢谢!
答案 0 :(得分:0)
尝试这样称呼:
scope.addLicensesToFramework = function() {
scope.framework.$addRequiredLicenses({
required_licenses: Object.keys(scope.selectedLicenses),
id: 1234
}, function(resp){ console.log(resp) });
}
还要注意我在参数对象中包含了id ..你可能需要它。