Как отправить массив параметров через GET с Restangular

Мне нужно отправить массив фильтров через параметры получения в API следующим образом:

/myList?filters[nickname]=test&filters[status]=foo

Теперь, если я отправлю объект напрямую следующим образом:

Restangular.one('myList').get({filters: {
    nickname: 'test',
    status: 'foo'
}});

Действительно отправленный запрос

?filters={"nickname":"test","status":"foo"}

Как отправить реальный массив? Должен ли я думать об альтернативе?


person Jihel    schedule 26.08.2013    source источник
comment
Из любопытства, где или как вы видите вывод запроса?   -  person Dan Jimenez    schedule 06.04.2015
comment
@Dan Jimenez Вкладка «Сеть» в инструментах разработчика в любом веб-браузере :) Это должно сработать.   -  person Diosney    schedule 04.02.2016


Ответы (4)


Я нашел способ сделать это, мне нужно перебрать объект фильтра, чтобы создать новый объект с [] в имени:

var query = {};
for (var i in filters) {
    query['filters['+i+']'] = filters[i];
}

Restangular.one('myList').get(query);

Производить:

&filters%5Bnickname%5D=test

У кого-то есть лучшее решение?

person Jihel    schedule 26.08.2013

Попробуй это:

Restangular.all('myList').getList({filters: {
    nickname: 'test',
    status: 'foo'
}});
person misaizdaleka    schedule 30.12.2013
comment
Этот ответ таков, как он должен работать - с использованием Restangular 1.4.0 и параметров вложенного массива, которые не преобразуются в правильную строку запроса http. Удалось ли вам заставить код выше работать? - person Stan Bondi; 21.07.2014

если у вас очень мало контролируемых параметров, вы можете использовать этот способ.

Предполагая, что у вас есть несколько фильтров:

    var api = Restangular.all('yourEntityName');
    var params = {  commonWay          : 'value1',
                   'filter[property1]' : filterVariable1,
                   'filter[property2]' : filterVariable2
                 };

    api.getList(params).then(function (data) {
        alert(data);
    });

Я надеюсь, что это поможет вам.

person Leonardo    schedule 15.01.2014
comment
Ваш пример спас мой день :) Спасибо - person Diosney; 04.02.2016

упорядочить содержимое с помощью JSON

{
  "startkey": JSON.stringify(["Forum-03fa10f4-cefc-427a-9d57-f53bae4a0f7e"]),
  "endkey": JSON.stringify(["Forum-03fa10f4-cefc-427a-9d57-f53bae4a0f7e", {}]),
}

переводится как

?endkey=%5B"Forum-03fa10f4-cefc-427a-9d57-f53bae4a0f7e",+%7B%7D%5D&startkey=%5B"Forum-03fa10f4-cefc-427a-9d57-f53bae4a0f7e"%5D

i.e.

?endkey=["Forum-03fa10f4-cefc-427a-9d57-f53bae4a0f7e",{}]&startkey=["Forum-03fa10f4-cefc-427a-9d57-f53bae4a0f7e"]
person user3330831    schedule 20.02.2014
comment
Спасибо за публикацию, это самое прямое решение этой проблемы :) - person Rebekah Waterbury; 26.08.2015