Usando directivas en GraphQL

Escrito por picodotdev el .
java planeta-codigo programacion
Comentarios

GraphQL

En GraphQL construyendo la consulta adecuada se recuperan exclusivamente los datos solicitados.

Por ejemplo, si de un libro solo se requieren las propiedades el id, title y date de entre todas las que tienen la consulta sería en este caso la siguiente para una consulta que devuelve los datos de un conjunto de libros.

Si se desea recuperar solo el id y title sin el date la consulta debe ser diferente.

Consultas diferentes que devuelven diferentes datos

Esto obliga en principio a tener dos consultas diferentes según los datos recuperar. En principio, ya que las directivas skip e include definidas en la especificación de GraphQL permiten tener la misma consulta y parametrizar si un determinado dato ha de incluirse o no en el resultado.

Las directivas se definen en el lenguaje de consulta de GraphQL con el caracter @ y pueden recibir parámetros. La directiva skip permite omitir un dato según el valor de un booleano, si es true se omite y si es false se incluye, el comportamiento de include es el mismo pero con el valor contrario del booleano, si es true se incluye y si es false se omite.

Esta sería la consulta parametrizada para obtener los datos de los libros omitiendo o incluyendo su fecha en función de una variable utilizando la directiva include. Cuando el valor de la variable es true se incluye el dato fecha, cuando el valor de la variable es false no se incluye.

Utilizando el editor GraphiQL para construir y ejecutar consultas de una API de GraphQL se obtienen los resultados.

Misma consulta con directiva include que devuelve diferentes datos

Con un comando curl se realizan las mismas consultas.

El código fuente completo del ejemplo puedes descargarlo del repositorio de ejemplos de Blog Bitix alojado en GitHub y probarlo en tu equipo ejecutando el comando ./gradlew run. Requiere Java 9+ o Docker.