web-dev-qa-db-fra.com

Envoi de paramètres GET en Restangular

J'utilise Restangular dans mon projet et auparavant, ce code fonctionnait bien pour récupérer un tableau d'objets: 

var params = {name: "Stack", surname: "Overflow"}
var service = Restangular.all('users')
service.getList(params)

La réponse du serveur était juste un tableau d'objets: 

[
 {...},
 {...}
]

Mais maintenant, j'ai ajouté la pagination, et ma réponse ne contient plus un tableau, mais un objet incluant un tableau: 

{
   totalCount: 500,
   data: [
     {...},
     {...}
   ]
}

De plus, j'ai changé service.getList(params) en service.get(params) (car getList n'attend que des tableaux). 

Et après ces modifications, mes paramètres GET ne sont pas hiérarchisés, c’est-à-dire que je vois dans la demande du débogueur comme ceci: 

users/[object%20Object] 

mais plus tôt (avec la méthode getList), cela a fonctionné comme prévu: 

users?name=Stack&surname=Overflow 

Quel est le problème ici? 

9
MyTitle

J'ai pu le résoudre en utilisant ceci: 

var params = {name: "Stack", surname: "Overflow"}
var service = Restangular.all('users')
service.customGET("", params) // first parameter is required, so just provide empty string
13
MyTitle

Utilisez simplement one () et get ( params ): 

var params = {name: "Stack", surname: "Overflow"};
var service = Restangular.one('users');
service.get(params).then(function(response) {
   console.log(response);
})
0
perseus

Vous pouvez utiliser la méthode customGETLIST, regardez ceci:

// https://myapi.com/users?name=Stack&surname=Overflow

Restangular.all('users').customGETLIST('', {
    name: "Stack", 
    surname: "Overflow"
}).then(function (response) {
    console.log(response);
});

customGETLIST (path, [params, headers]): effectue un GET sur le chemin spécifique. Dans ce cas, vous vous attendez à obtenir un tableau, pas un seul élément. Vous pouvez éventuellement définir des paramètres et des en-têtes. 

Documentation: ICI

Bonne chance!!

0
Sebastián Lara