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) });
}

Также обратите внимание, что я включил идентификатор в объект параметров.. это, вероятно, понадобится.

Другие вопросы по тегам