2013-08-26 36 views
27

发送参数数组我有一个这样的API通过GET参数发送滤波器阵列:如何通过GET与Restangular

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

,如果我直接发送对象现在这个样子:

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

真正发送的查询是

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

如何发送一个真正的数组? 我应该考虑替代方案吗?

+0

出于好奇,哪里或你是如何看到查询输出是什么? –

+0

@丹Jimenez在任何浏览器的开发人员工具中的网络选项卡:)这应该有所斩获。 – diosney

回答

19

我发现了一个办法做到这一点,我必须遍历过滤对象来创建与[]的名称的新对象:

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

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

农产品:

&filters%5Bnickname%5D=test 

有人有更好的解决办法

11

试试这个:

Restangular.all('myList').getList({filters: { 
    nickname: 'test', 
    status: 'foo' 
}}); 
+1

这个答案是如何工作的 - 使用'Restangular' 1.4.0和嵌套数组参数不被转换成适当的http查询字符串。你是否能够得到上面的代码工作? –

7

,如果你有很少和控制的参数,就可以使用这种方式。

假设你有几个过滤器:

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

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

我希望这可以帮助您。

+0

你的例子保存了我的一天:)谢谢 – diosney

7

字符串化使用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"] 
+0

感谢发布,这是对这个问题最直接的解决方案:) –