Отправка GET-параметров в Restangular

Я использую Restangular в своем проекте, и ранее этот код хорошо работал для получения массива объектов:

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

Ответ от сервера был просто массив объектов:

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

Но теперь я добавил нумерацию страниц, и мой ответ теперь содержит не массив, а объект, который включает в себя массив:

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

Также я изменился service.getList(params) в service.get(params) (так как getList ожидает только массивы).

И после этого изменения мои параметры GET не строковые, то есть я вижу в запросе отладчика, как это:

users/[object%20Object]

но раньше (при использовании getList метод) все заработало как я и ожидал:

users?name=Stack&surname=Overflow

В чем здесь проблема?

3 ответа

Я смог решить это с помощью этого:

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

Ты можешь использовать customGETLIST метод, посмотрите это:

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

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

customGETLIST (путь, [параметры, заголовки]): выполняет GET для определенного пути. В этом случае вы ожидаете получить массив, а не один элемент. При желании вы можете установить параметры и заголовки.

Документация: ЗДЕСЬ

Удачи!!

Просто используйте one() и получите(params):

var params = {name: "Stack", surname: "Overflow"};
var service = Restangular.one('users');
service.get(params).then(function(response) {
   console.log(response);
})
Другие вопросы по тегам