Подтвердить что ты не робот

Ресурс 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

Любые идеи, почему?

4b9b3361

Ответ 1

Когда вы вызываете Products.get() в контроллере, вы не используете правильное имя параметра (вам нужно использовать "productId" вместо "id" на основе вашего определения $resource). Вместо этого попробуйте называть его следующим:

Products.get({ productId: id })

Вот фрагмент документа для $resource, который объясняет, как он работает:

Каждое значение ключа в объекте параметра сначала привязывается к шаблону url, если оно присутствует, а затем любые лишние ключи добавляются к поисковому запросу URL-адреса после?.

В вашем случае он не находит "id" в качестве параметра в URL-адресе, поэтому он добавляет это к строке запроса.