Параметр URL-адреса ng-resource не работает

$resource неправильно передает параметр URL-адреса при выполнении запроса PUT через пользовательское действие.

Это моя служба создания ресурса.

.factory('cartItemsService', ['$resource', function($resource) {
    return $resource('/api/cart/:cartId/items/', {format: 'json'}, {
        get: {method: 'GET', isArray: true},
        update: {method: 'PUT', isArray: true},
    });
}])

В моем контроллере я пытаюсь обновить список таких элементов. Обратите внимание, что $scope.cart.id существует и является правильным (в данном случае 1)

$scope.cartItems = cartItemsService.update({cartId: $scope.cart.id});

Однако URL-адрес запроса: /api/cart/items/, но я ожидаю /api/cart/1/items/. Это отлично работает, если я делаю .get({cartId: <some_id>}), но, похоже, не работает для обновления.

РЕДАКТИРОВАТЬ: угловая версия 1.1.5


person Andre    schedule 28.08.2013    source источник
comment
Что произойдет, если вы жестко запрограммируете и попробуете update({cartId:1})?   -  person Chandermani    schedule 28.08.2013
comment
@Чандермани, точно так же   -  person Andre    schedule 28.08.2013


Ответы (1)


В конце концов, это произошло из-за заголовков запроса, которые я устанавливал перед отправкой запроса.

Я пытался установить заголовки put следующим образом:

$http.defaults.headers.put['X-CSRFToken'] = $cookies.csrftoken;

Это привело к неправильному форматированию URL-адреса запроса.

Вместо этого изменил его, чтобы установить заголовок сообщения, и это сработало.

$http.defaults.headers.post['X-CSRFToken'] = $cookies.csrftoken;
person Andre    schedule 28.08.2013