Как отправить массив параметров через GET с помощью Restangular
Мне нужно отправить массив фильтров через параметры get в API, как это:
/myList?filters[nickname]=test&filters[status]=foo
Теперь, если я отправлю объект прямо следующим образом:
Restangular.one('myList').get({filters: {
nickname: 'test',
status: 'foo'
}});
Отправленный запрос
?filters={"nickname":"test","status":"foo"}
Как отправить реальный массив?
Должен ли я думать об альтернативе?
Ответы
Ответ 1
Я нашел способ сделать это, мне нужно перебрать объект фильтра, чтобы создать новый объект с именем [] в имени:
var query = {};
for (var i in filters) {
query['filters['+i+']'] = filters[i];
}
Restangular.one('myList').get(query);
Produce:
&filters%5Bnickname%5D=test
У кого-то есть лучшее решение?
Ответ 2
Попробуйте следующее:
Restangular.all('myList').getList({filters: {
nickname: 'test',
status: 'foo'
}});
Ответ 3
если у вас очень мало и контролируемых параметров, вы можете использовать этот способ.
Предполагая, что у вас мало фильтров:
var api = Restangular.all('yourEntityName');
var params = { commonWay : 'value1',
'filter[property1]' : filterVariable1,
'filter[property2]' : filterVariable2
};
api.getList(params).then(function (data) {
alert(data);
});
Надеюсь, это поможет вам.
Ответ 4
подстроить содержимое с помощью 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
то есть.
?endkey=["Forum-03fa10f4-cefc-427a-9d57-f53bae4a0f7e",{}]&startkey=["Forum-03fa10f4-cefc-427a-9d57-f53bae4a0f7e"]