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?
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
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);
})
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!!