Отправка 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);
})