J'ai besoin d'obtenir des données à partir d'une API de repos, avec la partie id du produit de l'URL (et non comme paramètre de requête).
L'usine:
.factory('Products', ['$resource',
function($resource) {
return $resource('products/:productId', {
productId: '@id'
}, {
query: {
isArray: false
},
update: {
method: 'PUT'
}
});
}
])
Le controlle:
$scope.getProduct = function(id, from) {
$scope.product = Products.get({ id: id }, function(){
console.log($scope.product);
});
}
Mon URL est construite comme:
/products?id=5426ced88b49d2e402402205
au lieu de:
/products/5426ced88b49d2e402402205
Des idées pourquoi?
Lorsque vous appelez Products.get()
dans le contrôleur, vous n'utilisez pas le nom de paramètre correct (vous devez utiliser "productId" au lieu de "id" en fonction de votre définition du $resource
). Essayez plutôt de l'appeler ainsi:
Products.get({ productId: id })
Voici un extrait de la documentation pour $resource
qui explique comment cela fonctionne:
Chaque valeur de clé dans l'objet paramètre est d'abord liée au modèle d'URL s'il est présent, puis toute clé en excès est ajoutée à la requête de recherche d'URL après le?.
Dans votre cas, il ne trouve pas "id" comme paramètre dans l'URL, il ajoute donc cela à la chaîne de requête.