Listar, filtrar y ordenar registros desde la API
Para tener un ejemplo sencillo utilizaremos impuestos, que tiene pocos elementos. Para ello haz una consulta de tipo GET a la url http://localhost:8000/api/3/impuestos
Este listado viene por defecto limitado a 50 elementos y empieza por el primer elemento. Por tanto, sería equivalente a añadir como parámetros ?limit=50&offset=0. Hay que tener esto en cuenta, porque puede que para su aplicación sea conveniente leer más o menos registros de golpe.
Paginación
Para obtener más resultados será necesario indicar a partir de qué elemento queremos seguir recibiendo datos. Para este ejemplo seguiremos a partir del 1, es decir, obtenermos 50 elementos a partir del 1 (nos saltamos el primero, que es el 0):
http://localhost:8000/api/3/impuestos?offset=1
Más ejemplos de paginación:
Partiendo de los parámetros offset y limit, podemos montar la paginación de la forma que sea más conveniente:
Para un limit de 3 (3 elementos por página):
- Página 1:
?offset=0&limit=3
: devolverá los elementos 0, 1, 2. - Página 2:
?offset=3&limit=3
: devolverá los elementos 3, 4, 5. - Página 3:
?offset=6&limit=3
: devolverá los elementos 6, 7, 8.
Filtros
Podemos aplicar distintos filtros al listado para obtener solamente aquellos resultados que concuerden con los filtros. Para ello simplemente debemos añadir el parámetro filter[nombre_columna]=valor
Filtrado por codimpuesto
Obtener todos los registros con el valor IVA21 en coddivisa:
http://localhost:8000/api/3/impuestos?filter[codimpuesto]=IVA21
Filtrado por codimpuesto y tipo
Obtener todos los registros con el valor IVA21 en codimpuesto y el valor 1 en tipo:
http://localhost:8000/api/3/impuestos?filter[codimpuesto]=IVA21&filter[tipo]=1
Filtrar por iva
Obtener todos los registros con un valor de iva superior a 8:
http://localhost:8000/api/3/impuestos?filter[iva_gt]=8
Operadores
Los filtros por defecto aplican el operador "=", pero es posible aplicar otros operadores añadiendo un sufijo al nombre de la columna. Ejemplos:
- filter[tasaconv_gt]=2 -> tasaconv mayor que 2.
- filter[tasaconv_gte]=2 -> tasaconv mayor o igual que 2.
- filter[tasaconv_lt]=2 -> tasaconv menor que 2.
- filter[tasaconv_lte]=2 -> tasaconv menor o igual que 2.
- filter[tasaconv_neq]=2 -> tasaconv distinto de 2.
- filter[descripcion_like]=PESO -> descripción contiene PESO.
Operación al aplicar los filtros
Por defecto cada filtro se aplica con una operación AND, es decir, se aplican todos los filtros a los resultados, pero podemos hacer que la operación sea OR. Por ejemplo para obtener el listado de todas las divisas que contengan PESO en su descripción O QUE su tasaconv sea mayor que 2.
http://localhost:8000/api/3/divisas?filter[descripcion_like]=PESO&filter[tasaconv_gt]=2&operation[tasaconv_gt]=OR
Ordenación
Obtener todos los registros que en descripcion contengan PESOS y ordenados por coddivisa de forma descendente:
http://localhost:8000/api/3/divisas?filter[descripcion_like]=PESOS&sort[coddivisa]=DESC
Count o Total de registros
En la respuesta de la API, en el campo X-Total-Count de la cabecera recibimos el número total de registros de la consulta, sin aplicar limit ni offset, es decir:
- Si estamos consultamos productos, ahí tendremos el número total de productos.
- Si estamos consultando todos los productos de la familia X, lo que tendremos es el número total de productos de la familia X.