Paginación
Al utilizar los servicios de la API web de AceptaBits encontraras algunos métodos que utilizan paginación para su consulta, como por ejemplo get-shops
o get-products
por mencionar algunos ejemplos, es importante para el desarrollador entender cómo funciona para poder realizar el consumo de estos servicios de manera correcta, a continuación explicaremos más a detalle cómo se compone y como es que funciona.
Fundamento general
La paginación se construye básicamente de dos elementos: la Pagina de consulta y del Limite de elementos para dicha consulta, a continuación te detallamos que es cada uno de ellos, imaginando que tenemos un libro de productos:
- Pagina: nos indica a que página de nuestro libro imaginario de productos nos vamos a posicionar para realizar la consulta
- Limite: nos indica cuantos resultados vamos a obtener en cada una de las páginas de nuestro libro imaginario de productos
Ahora bien, supongamos que nuestro libro imaginario tiene 100 productos, y lo vamos a dividir en 10 productos por pagina, esto quiere decir que vamos a tener 10 paginas para consultar, por otra parte si imaginamos que no son 10 productos por página, sino que son 100 productos por página, esto nos indica que solo tendremos 1 pagina para consultar.
Siguiendo este principio desarrollemos un pequeño ejercio utilizando el metodo de get-shops
que veremos a continuación.
Ejemplo de paginación
Supongamos que para iniciar nuestra consulta enviamos el parámetro page
con valor 1
y el parámetro limit
con valor 10
, quiere decir que estamos realizando nuestra primera consulta al libro con la lista de tiendas desde la pagina 1 y queremos que nos muestra un máximo de 10 tiendas por cada página que consultemos, obtendríamos una respuesta así:
{
"status": true,
"success": {
"code": "0039"
},
"data": {
"data": [
{
"code": "pgbsho96548989615570217",
"name": "Velas aromáticas Santa Rosa",
"created_at": "2024-08-06T21:40:57.000000Z",
"total_services": 0,
"total_products": 0,
"total_customers": 0,
"total_orders": 0,
"total_agents": 0,
"total_branches": 0,
"isEditable": "-1",
"isDefault": "0",
"description": "Fabricación y distribución de velas aromáticas, realizamos pedidos al mayoreo y menudeo",
"website": null,
"address": "Avenida de la vela #100, Col. Ejemplo",
"phone": "33XXXXXXXX",
"email": "velas_aromaticas@ejemplo.com",
"lat": null,
"lng": null,
"has_logo": "-1",
"logo_file": "pgbsho96548989615570217.png",
"isShown": "-1"
},
{
"code": "pgbsho40996222369461182",
"name": "Tienda general",
"created_at": "2024-07-18T20:09:19.000000Z",
"total_services": 1,
"total_products": 2,
"total_customers": 2,
"total_orders": 0,
"total_agents": 0,
"total_branches": 0,
"isEditable": "0",
"isDefault": "-1",
"description": null,
"website": null,
"address": null,
"phone": null,
"email": null,
"lat": null,
"lng": null,
"has_logo": "0",
"logo_file": null,
"isShown": "-1"
}
],
"current_page": 1,
"last_page": 1,
"per_page": "10",
"from": 1,
"to": 2,
"total": 2
}
}
Si analizamos la respuesta podemos encontrar la información de la consulta y la paginación repartida en los siguientes campos:
current_page
- Indica cual es la página actual en la paginaciónlast_page
- Indica cual es el último número de página posible (este valor cambia dependiendo del límite de elementos por página que se envió con el parametro limit)per_page
- Indica el límite de elementos mostrados por paginafrom
- indica el índice inicial de la numeración de las tiendas mostrado en esta paginato
- indica el índice final de la numeración de las tiendas mostrado en esta paginatotal
- Indica el número de total de elementos que existendata
- Arreglo donde se listan las tiendas que tiene creadas el usuario en la plataforma
Analizando a fondo la información del ejemplo tenemos lo siguiente:
total
nos indica que tenemos únicamente 2 tiendascurrent_page
no indica que estamos en la pagina 1last_page
en este ejemplo nos indica que la última página posible para consultar es la pagina 1, esto es debido a que estamos obteniendo 10 elementos por página, al tener únicamente untotal
de 2 tiendas, todas las podríamos consultar en la pagina 1from
nos indica que estamos obteniendo las tiendas desde la posición número 1 del total de tiendas que tenemos para la consultato
nos indica que estamos obteniendo las tiendas hasta la posición número 2 del total de tiendas que tenemos para la consultadata
nos muestra los resultados de la consulta realizada
Ahora realicemos otro ejemplo, supongamos que para iniciar nuestra consulta enviamos el parámetro page
con valor 1
y el parámetro limit
a diferencia del ejemplo anterior lo usaremos con valor 1
, esto quiere decir que estamos realizando nuestra primera consulta al libro con la lista de tiendas desde la pagina 1 y queremos que nos muestra un máximo de 1 tienda por cada página que consultemos, con estos valores obtendríamos una respuesta así:
{
"status": true,
"success": {
"code": "0039"
},
"data": {
"data": [
{
"code": "pgbsho96548989615570217",
"name": "Velas aromáticas Santa Rosa",
"created_at": "2024-08-06T21:40:57.000000Z",
"total_services": 0,
"total_products": 0,
"total_customers": 0,
"total_orders": 0,
"total_agents": 0,
"total_branches": 0,
"isEditable": "-1",
"isDefault": "0",
"description": "Fabricación y distribución de velas aromáticas, realizamos pedidos al mayoreo y menudeo",
"website": null,
"address": "Avenida de la vela #100, Col. Ejemplo",
"phone": "33XXXXXXXX",
"email": "velas_aromaticas@ejemplo.com",
"lat": null,
"lng": null,
"has_logo": "-1",
"logo_file": "pgbsho96548989615570217.png",
"isShown": "-1"
}
],
"current_page": 1,
"last_page": 2,
"per_page": "1",
"from": 1,
"to": 1,
"total": 2
}
}
Analizando a fondo la información del ejemplo tenemos lo siguiente:
total
nos indica que tenemos únicamente 2 tiendascurrent_page
no indica que estamos en la pagina 1last_page
en este ejemplo nos indica que la última página posible para consultar es la pagina 2, esto es debido a que estamos obteniendo únicamente 1 elemento por página, al tener untotal
de 2 tiendas, nos dice que podríamos consultar el total de todas ellas en 2 paginasfrom
nos indica que estamos obteniendo las tiendas desde la posición número 1 del total de tiendas que tenemos para la consultato
nos indica que estamos obteniendo las tiendas hasta la posición número 1 del total de tiendas que tenemos para la consultadata
nos muestra los resultados de la consulta realizada
Observemos que en esta consulta podemos ver la tienda llamada Velas aromáticas Santa Rosa, la cual compararemos con el siguiente ejemplo
Ahora siguiendo la misma línea del ejemplo anterior realizaremos la consulta de la siguiente manera:
- En lugar de hacer la consulta a la pagina 1 lo haremos a la pagina 2, como sabemos la respuesta del ejemplo anterior nos indicó que la ultima página posible para consultar es la pagina 2 mostrando únicamente 1 elemento por página (si tuviéramos por ejemplo 4 tiendas, la última página posible para consultar sería la pagina 4, o si tuviéramos 5 tiendas, la última página posible para consultar sería la pagina 5, esto por mencionar algunos ejemplos).
Por lo tanto, obtendríamos la siguiente respuesta:
{
"status": true,
"success": {
"code": "0039"
},
"data": {
"data": [
{
"code": "pgbsho40996222369461182",
"name": "Tienda general",
"created_at": "2024-07-18T20:09:19.000000Z",
"total_services": 1,
"total_products": 2,
"total_customers": 2,
"total_orders": 0,
"total_agents": 0,
"total_branches": 0,
"isEditable": "0",
"isDefault": "-1",
"description": null,
"website": null,
"address": null,
"phone": null,
"email": null,
"lat": null,
"lng": null,
"has_logo": "0",
"logo_file": null,
"isShown": "-1"
}
],
"current_page": 2,
"last_page": 2,
"per_page": "1",
"from": 2,
"to": 2,
"total": 2
}
}
Analizando a fondo la información del ejemplo tenemos lo siguiente:
total
nos indica que tenemos únicamente 2 tiendascurrent_page
no indica que estamos en la pagina 2last_page
en este ejemplo nos indica que la última página posible para consultar es la pagina 2, esto es debido a que estamos obteniendo únicamente 1 elemento por página, al tener untotal
de 2 tiendas, nos dice que podríamos consultar el total de todas ellas en 2 paginasfrom
nos indica que estamos obteniendo las tiendas desde la posición número 2 del total de tiendas que tenemos para la consultato
nos indica que estamos obteniendo las tiendas hasta la posición número 2 del total de tiendas que tenemos para la consultadata
nos muestra los resultados de la consulta realizada
Si observamos la respuesta estamos obteniendo en esta ocasión la tienda llamada Tienda general, en lugar de la tienda llamada Velas aromáticas Santa Rosa, esto es gracias la paginación y a que en esta ocasión estamos consultando la pagina 2 en lugar de la pagina 1.
Si comparamos ahora estos resultados con el primer ejemplo que realizamos al principio de esta sección consultando la pagina 1 y solicitando un límite de 10 elementos por página, podemos ver como en ese ejemplo se podía obtener el total de las tiendas en una sola página en lugar de una sola tienda por página como en estos últimos ejemplos.
La paginación es especialmente útil a la hora de consultar órdenes de venta por ejemplo, imaginando el caso de que tengamos cientos o miles de órdenes ya generadas.
Hay que mencionar también que en este tipo de métodos existen parámetros adicionales que funcionan como filtros, como por ejemplo en el método de get-shops
podemos enviar un parámetro adicional llamado search
, el cual además de apoyarnos con la paginación, nos ayuda a buscar una o varias tiendas en específico, buscando la coincidencia de lo que se envié en el parámetro dentro del nombre de la tienda, su descripción, el email de contacto, el teléfono, el código de la tienda, etc...
Comentarios
Para terminar con esta sección, solo podemos mencionar la gran utilidad que tiene la paginación en el consumo de los servicios de la API web de AceptaBits y su fácil implementación utilizando únicamente el parámetro page
y el parámetro limit
, claro esta, apoyándonos también de la respuesta obtenida para saber cuántos elementos tenemos y hasta que página podemos consultar obteniendo resultados.
Si tienes alguna duda recuerda que siempre puedes contactar con el equipo de soporte para desarrolladores ingresando en el siguiente enlace: Soporte para desarrolladores.