Allá por 2015 publicábamos un primer post sobre GraphQL

GraphQL es una especificación que permite construir y consultar APIs que permiten a los clientes preguntar por los datos que necesitan. Fue originalmente diseñada por Facebook para minimizar el número de peticiones a las APIs para renderizar vistas en aplicaciones móviles. Luego se liberó a la comunidad y varias compañías lo han adaptado incluyendo Github, Yelp, Coursera, y Shopify reemplazando sus APIs REST existentes.

Los beneficios de GraphQL son:

· Esuqema:. GraphQL requiere un esquema definido por el usuario creado utilizando un sistema de tipo estricto. Este esquema actúa como un modelo para los datos manejados por la API, lo que permite a los desarrolladores saber exactamente qué tipo de datos están disponibles y en qué formato. Las herramientas de desarrollo pueden aprovechar el esquema a través del uso de la introspección, la habilitación de la documentación, la consulta automática completa y las herramientas de burla.

· Solicitar solo los datos necesarios. Dado que las consultas GraphQL pueden definir qué datos se necesitan exactamente en el momento de la consulta, todos los datos necesarios para representar una vista de la aplicación se pueden solicitar en una sola solicitud, reduciendo el número de solicitudes de red de ida y vuelta y la latencia de la aplicación.

· Wrapper de Data Services existentes: GraphQL puede funcionar con cualquier base de datos o capa de datos, lo que permite que un solo servicio GraphQL obtenga datos de múltiples fuentes en una sola solicitud servida por la API compuesta.

Veamos un ejemplo:

Un esquema GraphQL tiene este aspecto:

Donde estamos definiendo un tipo Movie, sus campos, y una query moviesByTitle.

Una vez definido el esquema en GraphQL podría hacer una query como esta en la que indico los datos que quiero que mee devuelvan de la película “Matrix”, título y año:

El resultado de nuestra query sería:

Bonito, verdad? Aún nos falta ver cómo extraigo los datos de nuestro Data Layer: Hay varias bases de datos que soportan trabajar con GraphQL, aunque quizás la más conocida es Neo4J que a través de su extensión GraphQL soporta consultas en este lenguaje.

Podéis leer más aquí sobre esta extensión. Que incluso se soporta en el Neo4J Browser:

Aunque también hay formas de conectar GraphQL con Mongo por ejemplo: https://www.compose.com/articles/using-graphql-with-mongodb/