GraphQL es la sigla de Graph Query Language, que podemos traducir como Lenguaje de Consulta de Datos en Grafos. Está relacionado con el desarrollo de APIs y viene ganando cada vez más nuevos adeptos en el mundo de la comunicación. Desarrollado por Facebook en 2012, mucha gente lo conoce simplemente como el lenguaje de consulta […]
GraphQL es la sigla de Graph Query Language, que podemos traducir como Lenguaje de Consulta de Datos en Grafos. Está relacionado con el desarrollo de APIs y viene ganando cada vez más nuevos adeptos en el mundo de la comunicación.
Desarrollado por Facebook en 2012, mucha gente lo conoce simplemente como el lenguaje de consulta de Facebook. Su principal función facilitar la entrega de datos para aplicaciones web y mobile. Es decir, hacer mucho más fácil el proceso de entrega de información del lado del cliente, respetando el orden en la requisición.
En este contenido, explicaremos más sobre GraphQL, sus diferenciales y ejemplos de uso.
¿Qué es GraphQL?
Para muchos, GraphQL es una forma de desarrollar APIs orientadas a tipos. Sin embargo, el concepto presentado en su sitio oficial es un poco diferente.
Es posible notar que se trata de un lenguaje de consulta para APIs. Este ofrece la descripción completa y sucinta de los datos de un API, ofreciendo la posibilidad de solicitar exactamente lo que necesita, y nada más que eso.
Las consultas de GraphQL retornan con resultados previsibles. Incluso, las aplicaciones que utilizan este lenguaje son más rápidas y estables, ya que estas son las que controlan los datos que resultan de las consultas.
Es importante mencionar que GraphQL no es un banco de datos y no necesita de éstos para su funcionamiento. Tampoco se trata de un framework, y no es exclusivo para HTTP y APIs.
¿Cuáles son los diferenciales de GraphQL?
El gran beneficio de GraphQL es que permite que una API pueda retornar con datos claros y útiles, todo de acuerdo con la necesidad real. Para el usuario que consume las APIs, esto es muy importante. Además de esto, tiene un mejor rendimiento que las APIs tradicionales.
A primera vista, es normal que puedas confundir GraphQL con JSON. Pero la característica descriptiva del modelo de datos es muy parecida con las especificaciones de objetivos, a partir de la llamada orientación a objetos.
Esa relación no ocurre simplemente por cuenta de los atributos, sino también porque ambas utilizan el concepto de herencia con interfaces.
Esto termina siendo otro diferencial importante, pues la programación orientada a objetos es difundida en prácticamente todas las áreas de desarrollo de sistemas.
Otra ventaja de GraphQL es la posibilidad de agregar nuevos campos y tipos a un API sin afectar las consultas ya existentes. Incluso, los campos desactualizados pueden aún ser discontinuados y ocultados de las herramientas.
Utilizando una versión única, las APIs de GraphQL le ofrecen a las aplicaciones el acceso continuo de nuevos recursos, además de incentivar códigos de servidor limpios y actuales.
Modelo de datos usando GraphQL
Para entender mejor el funcionamiento de GraphQL, daremos un ejemplo simple, que está publicado en la propia página web del lenguaje.
Primero, es necesario describir cómo quieres que sea tu estructura de datos. En este caso, en un tipo conocido como “Project”, hay 3 atributos:
- Name;
- Tagline;
- Contributors.
A partir de aquí, ya es posible crear una consulta con los datos que necesitas. Si vemos rápidamente hacia el código, se puede notar que la consulta es para “Project” con nombre “GraphQL”, y que la respuesta será solamente el atributo “Tagline”.
Después, el resultado que obtendrás con la consulta será el siguiente:
Es decir, que el resultado es exactamente aquello que fue solicitado, sin más o menos.
GraphQL x REST: ¿cuál es mejor?
Una de las primeras cosas que vienen a la mente sobre GraphQL es cuestionarnos si REST no tiene exactamente la misma función.
En primer lugar, vamos a las definiciones. REST es un estilo de arquitectura de software que permite que un conjunto de restricciones sea definido para utilizarse en la creación de servicios web.
El objetivo primario es definir características fundamentales para que las aplicaciones web sean construidas de acuerdo con las buenas prácticas.
REST realiza la búsqueda de información, pero no de la misma forma con que GraphQL lo hace. Además de eso, REST por si solo no puede filtrar los datos de la igul que GraphQL.
A pesar de esto, REST presenta 3 ventajas importantes en relación con GraphQL:
- Su URL es más completa y con mucho Nesting (alineamiento);
- En él hay Over Fetching, es decir, muchos más datos de los que son necesarios;
- Realiza muchas más requisiciones HTTP cuando la estructura de datos es un poco más compleja.
De cualquier forma, GraphQL fue desarrollado para cubrir las necesidades de mayor flexibilidad y eficiencia en las consultas. De esta forma, resuelve deficiencias que los desarrolladores experimentan al interactuar con las APIs REST.