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