(Gracias a Jose Ignacio conocía esta funcionalidad tan interesante de CXF 😉 )
CXF desde la versión 2.3.0 soporta FIQL (Feed Item Query Language) que es un lenguaje que permite en servicios REST expresar condiciones de búsqueda de forma intuitiva y URI-friendly.
Los operadores FIQL son:
| Operator | Description |
| "==" | Equal |
| "!=" | Not Equal |
| "=lt=" | Less Than |
| "=le=" | Less or Equal |
| "=gt=" | Greater Than |
| "=ge=" | Greater or Equal |
| ";" | AND |
| "," | OR |
Los últimos operadores AND y OR permiten componer expresiones anidadas.
Y permiten definir expresiones como:
// Find all employees younger than 25 or older than 35 living in London
/employees?_s=(age=lt=25,age=gt=35);city==London
// Find all books on math or physics published in 1999 only.
/books?_s=date=lt=2000-01-01;date=gt=1999-01-01;(sub==math,sub==physics)
Queries FIQL:
Para trabajar con queries FIQL CXF ofrece la clase SearchCondition que permite filtrar una colección de datos (por ejemplo un SELECT *) que cumplan los criterios:
(evidentemente esta funcionalidad hay que usarla con cuidado ya que el filtrado se hace en memoria después de recuperar todos los datos)
Mapeo de Queries
CXF también permite mapear parámetros de la query a atributos de un Bean.
Así esta query:
Con esta configuración:
Mapeará el parámetro oname con valor Fred al atributo name de la clase Name:
Convertir queries FIQL a otros lenguajes
Esta funcionalidad es muy, muy interesante ya que permite convertir la query FIQL a otro lenguaje (por ejemplo a SQL), se entiendo mejor con un ejemplo:
Vemos que el ?_s="level=gt=10 se ha convertido a SELECT LEVEL_COLUMN FROM table WHERE LEVEL_COLUMN > ’10’
CXF ofrece conversores a SQL, a JPA, a Lucene (esta desde CXF 2.7.1) y a LDAP (desde CXF 2.7.1 también).
También ofrece la posibilidad de crear nuestros propios conversores.
Construir Queries FIQL
Para los clientes de nuestros Servicios REST CXF también ofrece clases de utilidad que nos permite construir de forma sencilla estas queries.
Una sencilla:
Y otras más complejas:
Usando Fechas en las Queries
Por defecto CXF soporta fechas con el formato yyyy-MM-dd:

Pero también se permiten usar formatos de fecha a medida

usando la propiedad de contexto search.date-format:










Deja un comentario