0

$resource 在通过自定义操作发出 PUT 请求时未正确传递 url 参数。

这是我创建资源的服务。

.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

4

1 回答 1

0

最后,这是由于我在发出请求之前设置的请求标头。

我试图设置put这样的标题:

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

这就是导致请求 url 格式不正确的原因。

将其更改为设置帖子标题,并且它起作用了。

$http.defaults.headers.post['X-CSRFToken'] = $cookies.csrftoken;
于 2013-08-28T12:43:28.403 回答