Ресурс AngularJS $передает идентификатор в качестве параметра запроса вместо URL-адреса
Мне нужно ПОЛУЧИТЬ данные из API-интерфейса отдыха, причем идентификатор продукта является частью URL-адреса (а не как параметр запроса).
factory:
.factory('Products', ['$resource',
function($resource) {
return $resource('products/:productId', {
productId: '@id'
}, {
query: {
isArray: false
},
update: {
method: 'PUT'
}
});
}
])
Контроллер:
$scope.getProduct = function(id, from) {
$scope.product = Products.get({ id: id }, function(){
console.log($scope.product);
});
}
Мой url построен как:
/products?id=5426ced88b49d2e402402205
вместо:
/products/5426ced88b49d2e402402205
Любые идеи, почему?
Ответы
Ответ 1
Когда вы вызываете Products.get()
в контроллере, вы не используете правильное имя параметра (вам нужно использовать "productId" вместо "id" на основе вашего определения $resource
). Вместо этого попробуйте называть его следующим:
Products.get({ productId: id })
Вот фрагмент документа для $resource
, который объясняет, как он работает:
Каждое значение ключа в объекте параметра сначала привязывается к шаблону url, если оно присутствует, а затем любые лишние ключи добавляются к поисковому запросу URL-адреса после?.
В вашем случае он не находит "id" в качестве параметра в URL-адресе, поэтому он добавляет это к строке запроса.