Ресурс AngularJS - метод PUT не получает идентификатор
У меня есть фабрика, которая возвращает ресурс $ для моей модели Article:
angular.module('ADI.Resources').factory("Articles", ['$resource', function($resource) {
return $resource('/api/v1/article/:articleId', {
articleId: '@_id',
_shop: window.user._shop
}, {
update: {
method: 'PUT'
}
});
}]);
GET
, POST
а также DELETE
работают хорошо, но не обновление (PUT). Вот код, который я использую:
Articles.update({articleId: '300000000000000000000001'}, function(article){
console.log(article);
});
Это делает этот запрос:
PUT http://localhost:3000/api/v1/article?_shop=100000000000000000000001
вместо:
PUT http://localhost:3000/api/v1/article/300000000000000000000001?_shop=100000000000000000000001
Есть идеи, почему параметр: articleId не заполняется при обновлении? Спасибо!
2 ответа
Решение
Как отметил Фальс в комментарии, параметр articleId был в содержимом запроса. Поэтому я сделал небольшую хитрость, чтобы она также была в URI.
angular.module('ADI.Resources').factory("Articles", ['$resource', function($resource) {
return $resource('/api/v1/article/:articleId', {
articleId: '@_id',
_shop: window.user._shop
}, {
update: {
method: 'PUT',
params: {
articleId: "@articleId"
}
}
});
}]);
У меня была та же проблема, проблема здесь была для следующей строки:
articleId: '@_id',
эта строка должна быть:
articleId: '@articleId',
articleId не должен быть определен снова.