Angular $resource POSTING весь объект, а не только свойства, переданные ему
Я использую ресурс $ 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]}
в полезной нагрузке, и я не могу понять, почему он отправляет весь ресурс как тело. (На самом деле это не отправка, а только исходный ресурс)
Любое понимание было бы очень полезно, спасибо!
1 ответ
Попробуйте назвать это так:
scope.addLicensesToFramework = function() {
scope.framework.$addRequiredLicenses({
required_licenses: Object.keys(scope.selectedLicenses),
id: 1234
}, function(resp){ console.log(resp) });
}
Также обратите внимание, что я включил идентификатор в объект параметров.. это, вероятно, понадобится.