GraphQL es un lenguaje de consulta para APIs. Las API que proporcionan una interfaz de GraphQL para consultar datos se denominan APIs de GraphQL. Proporcionan una interfaz fácil de usar para consultar datos de diferentes fuentes en una sola llamada de API.
En un primer momento, Facebook desarrolló GraphQL para resolver los problemas que le planteaban las API de REST que utilizaba entonces (~2012). La compañía habilitó el lenguaje de consulta como código abierto en 2015. Actualmente, lo gestiona GraphQL Foundation. Hoy en día, son muchos los que ya lo han implementado en diferentes lenguajes de programación. Es compatible con los lenguajes de programación más utilizados.
La tecnología de GraphQL es relativamente nueva, muy prometedora y cada vez está más extendida. Es muy popular entre los desarrolladores de React.
Diferencias entre GraphQL, REST y SQL
Los debates sobre cuál es el mejor método de programación (GraphQL o REST) son habituales. Y aunque tanto GraphQL como REST son una buena interfaz para las API, no se pueden comparar.
Ocurre lo mismo entre GraphQL y SQL. De nuevo, los dos son opciones excelentes para consultar datos, pero tienen fines diferentes. GraphQL es más adecuado para la Web, ya que es compatible con JSON y su sintaxis es similar a la de Javascript.
Hay todo un ecosistema de GraphQL, que incluye herramientas, clientes y empresas, disponible en GraphQL Landscape.
Soluciones que aporta GraphQL:
1. Permite el uso de múltiples puntos de conexión
Los clientes pueden tener cientos de API y puede que una sola solicitud de datos tenga que acceder a unas 10 o 20 API y a un gran número de solicitudes. GraphQL proporciona un solo punto de conexión para la consulta de datos entre varias fuentes de datos. De esta forma, los desarrolladores de front-end pueden obtener los datos y actuar con rapidez.
2. Evita la sobrecarga de datos
Las API tradicionales devuelven datos en un formato específico. Por este motivo, a menudo se acaban obteniendo campos que no se necesitan. GraphQL también permite definir con anterioridad en qué formato JSON se necesitan los datos. De esta forma, solo se devuelven los datos que sean necesarios con cada solicitud.
Gracias a ello, las aplicaciones funcionarán más rápido. Esto es especialmente relevante para los dispositivos de Internet lentos, como los teléfonos móviles.
3. Crea versiones sencillas
Las API tradicionales tienen problemas a la hora de crear nuevas versiones, pero también con la compatibilidad con versiones anteriores. Esto se debe a que las versiones deben introducirse en el punto de conexión (como «/v1/») o en las cabeceras. GraphQL solo devuelve los datos que se solicitan explícitamente, por lo que se pueden añadir nuevas funcionalidades fácilmente.
4. Accede fácilmente a los datos (relacionales)
La forma tradicional de obtener datos relacionales de una fuente de datos consiste en escribir consultas SQL y unir datos de diferentes tablas; lo que resulta difícil cuando se trata de datos anidados con relaciones principal-secundario. Gracias a GraphQL, consultar datos mediante estándares web es más sencillo. De esta forma, no hace falta ser un experto en SQL para acceder a los datos.
5. Integración
GraphQL proporciona una interfaz fácil de usar para consultar datos de diferentes fuentes en una sola llamada de API. Sin embargo, para acceder a los datos de diferentes fuentes es necesario contar con una conectividad estable y un rendimiento escalable. MuleSoft puede servir como una capa de integración entre los sistemas y la API de GraphQL expuesta.
Otra solución es crear un gráfico de datos sobre la red de aplicaciones y exponerlo como un punto de conexión de GraphQL. Este punto de conexión se crea con un desarrollador gráfico mediante el cual las API pueden agruparse en un gráfico de datos basado en las relaciones que existen entre ellas. Los clientes pueden consultar este punto de conexión único mediante un desarrollador de consultas visuales, en el que pueden seleccionar los campos que necesiten para sus proyectos.
La federación de APIs permite organizar y definir relaciones de datos entre las API y sus redes de aplicaciones, así como generar automáticamente un punto de conexión de GraphQL para acceder a los datos. Así, los desarrolladores tienen rápidamente una alternativa para acceder a los datos de la red de aplicaciones.