Paginar Respuesta JSON

1,023 views
Skip to first unread message

jovelasquez

unread,
Jun 19, 2015, 5:00:51 PM6/19/15
to cakep...@googlegroups.com
Buenas Tardes,

Estoy construyendo un pequeño api rest en mi aplicación que consta de 4 métodos, uno de los método es un listado de registros filtrado por usuarios, en este caso siempre retornara máximo 50 registros.

Ahora bien, este método debe poder paginar esto 50 registros en 5 paginas y quería saber si alguno tiene idea de como paginar esta respuesta JSON,

anexo como tengo mi método ahorita,

public function api_index() {
$this->response->type(['json' => 'application/json']);
$this->Clinica->recursive = 0;

$this->set([
'response' => $this->Paginator->paginate(),
'_serialize' => array('response')
]);
}


Saludos


Pedro Arana

unread,
Jun 21, 2015, 12:45:55 PM6/21/15
to cakep...@googlegroups.com
¿ese codigo te regresa un json valido ?

Si es asi, solo te falta configurar Paginator

http://book.cakephp.org/2.0/en/core-libraries/components/pagination.html

En el controlador

public $paginate = array(
'limit' => 10,
);

Luego usar el helper para crear los enlaces de navegación
http://book.cakephp.org/2.0/en/core-libraries/helpers/paginator.html#PaginatorHelper


Saludos

Pedro Arana

PD: ver 3.0
http://book.cakephp.org/3.0/en/controllers/components/pagination.html
> --
> Has recibido este mensaje porque estás suscrito al grupo "CakePHP en
> Español" de Grupos de Google.
> Para anular la suscripción a este grupo y dejar de recibir sus mensajes,
> envía un correo electrónico a cakephp-esp...@googlegroups.com.
> Para publicar en este grupo, envía un correo electrónico a
> cakep...@googlegroups.com.
> Visita este grupo en http://groups.google.com/group/cakephp-esp.
> Para acceder a más opciones, visita https://groups.google.com/d/optout.



--
Beware of black-and-white solutions to multi-hued problems.

jovelasquez

unread,
Jun 22, 2015, 2:21:41 PM6/22/15
to cakep...@googlegroups.com
Gracias por Responder Pedro Arana,

Con respecto a lo que me comentas, Si, La respuesta JSON es valida, de hecho este es un ejemplo del JSON que me retorna,

{
   
"response": [
       
{
           
"Clinica": {
               
"id": 9,
               
"razon_social": "Clinica de Prueba 1",
               
"rif": "J012345678",
               
"estado_id": 1,
               
"direccion": "AV. PRINCIPAL A CON CALLE B, URB. C, CARACAS",
               
"telf_principal": "02122000000",
               
"telf_segundario": null,
               
"email": null,
           
}
       
}
   
]
}

Ahora bien, ya yo tengo configurado tal cual el componente de paginador dentro del metodo

$this->Paginator->settings = array(
'limit' => 4
);



Pero ahora me surge la duda de como hago para acceder via GET a esta URL y pasar los parámetros para paginar

http://denuncias.local/api/clinicas/index.json

Se que normalmente la url se pagina así 

/clinicas/index/page:1 hasta N paginas

Mi pregunta ahora es, como hago para paginar y pasarle los parametros a el metodo

http://denuncias.local/api/clinicas/index.json

Gracias!!

Saludos

jovelasquez

unread,
Jun 22, 2015, 3:02:33 PM6/22/15
to cakep...@googlegroups.com
Revisando toda la documentación sobre paginación me tope que hay una configuración, dejo el enlace 


anexo como deje mi método, si a alguien le sirve de referencia!

public function api_index() {
$this->response->type(['json' => 'application/json']);
$this->Clinica->recursive = 0;
$this->Paginator->settings = array(
'limit' => 10,
'maxLimit' => 100,
'paramType' => 'querystring'// Parametros por GET
);

$this->set([
'response' => $this->Paginator->paginate(),
'_serialize' => array('response')
]);
}

Saludos

Jorge

unread,
Jun 22, 2015, 6:34:46 PM6/22/15
to cakep...@googlegroups.com

Hola

Yo he empezado, pero aun no he terminado a desarrollar paginación con esto

http://crud.readthedocs.org/en/latest/listeners/api-pagination.html

Con eso creas la api que haga de paginador.

Con backbone.js o thorax.js la parte de cliente, de forma sencilla puedes gestionar las peticiones ajax

Y me falta enlazar la presentación de la tabla de datos que creo que lo haré con esto

http://backgridjs.com/ref/extensions/paginator.html

Espero que te sirva de ayuda

Reply all
Reply to author
Forward
0 new messages