Cómo enviar una matriz de parámetros a través de GET con Restangular
Tengo que enviar una matriz de filtros a través de los parámetros get en una API como esta:
/myList?filters[nickname]=test&filters[status]=foo
Ahora si envío un objeto directamente como este:
Restangular.one('myList').get({filters: {
nickname: 'test',
status: 'foo'
}});
La consulta realmente enviada es
?filters={"nickname":"test","status":"foo"}
¿Cómo enviar una matriz real ? ¿Debería pensar en una alternativa ?
27
4 answers
He encontrado una manera de hacerlo, tengo que iterar sobre el objeto de filtro para crear un nuevo objeto con el [] en el nombre :
var query = {};
for (var i in filters) {
query['filters['+i+']'] = filters[i];
}
Restangular.one('myList').get(query);
Produce:
&filters%5Bnickname%5D=test
Alguien tiene una mejor solución ?
19
Author: Jihel,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-08-26 15:08:18
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-08-26 15:08:18
Prueba esto:
Restangular.all('myList').getList({filters: {
nickname: 'test',
status: 'foo'
}});
11
Author: misaizdaleka,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-12-30 13:07:31
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-12-30 13:07:31
Si tiene muy pocos parámetros controlados, puede usarlos de esta manera.
Asumiendo que tienes pocos filtros:
var api = Restangular.all('yourEntityName');
var params = { commonWay : 'value1',
'filter[property1]' : filterVariable1,
'filter[property2]' : filterVariable2
};
api.getList(params).then(function (data) {
alert(data);
});
Espero que esto te ayude.
7
Author: Leonardo,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-01-15 21:28:20
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-01-15 21:28:20
Stringify el contenido usando JSON
{
"startkey": JSON.stringify(["Forum-03fa10f4-cefc-427a-9d57-f53bae4a0f7e"]),
"endkey": JSON.stringify(["Forum-03fa10f4-cefc-427a-9d57-f53bae4a0f7e", {}]),
}
Se traduce como
?endkey=%5B"Forum-03fa10f4-cefc-427a-9d57-f53bae4a0f7e",+%7B%7D%5D&startkey=%5B"Forum-03fa10f4-cefc-427a-9d57-f53bae4a0f7e"%5D
Es decir,
?endkey=["Forum-03fa10f4-cefc-427a-9d57-f53bae4a0f7e",{}]&startkey=["Forum-03fa10f4-cefc-427a-9d57-f53bae4a0f7e"]
7
Author: user3330831,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-02-20 02:47:59
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-02-20 02:47:59