RECURSOS

¿Qué es GraphQL?

GraphQL es una forma de comunicarse con las API creada como alternativa a REST.

01Un nuevo lenguaje de consulta

GraphQL es un lenguaje de consulta para APIs que fue desarrollado por Facebook y su comunidad de desarrolladores. Se estrenó en junio de 2018 y ahora es una tecnología madura que ha obtenido un amplio reconocimiento en el mercado. Como resultado, es bien reconocido y muchas empresas están optando por implementarlo. Para poder decir en qué se diferencia, tenemos que fijarnos en lo que todavía se utiliza más: REST y en qué se basa. A menudo se llama a GraphQL el sucesor de REST porque resuelve sus problemas principales. Como probablemente sepa, se basa en un tipo de diseño de sistema antiguo. Según éste, cada modelo de datos está disponible en una dirección separada. Teniendo una tienda online de ropa, por ejemplo, podemos tener las siguientes direcciones de bases de datos:

  • /cartón
  • /almacén
  • /productos
  • /descubrir
  • y muchos más...
Lenguaje de consulta GraphQL

02Obtenga sólo lo que quería

De hecho, el número de estas direcciones nunca será pequeño, al contrario, crecerá con el sistema. Tenga en cuenta que para casi todas las direcciones es necesario crear un conjunto de llamadas para gestionar las solicitudes de obtención, publicación, colocación o eliminación. Esto dará como resultado un gran número de direcciones que mantener y una cantidad aún mayor de llamadas necesarias para obtener los datos. GraphQL funciona de una manera completamente diferente. Sólo tenemos una dirección, una única fuente de verdad, a la que podemos solicitar datos. Lo que obtenemos depende únicamente de nosotros y de cómo construyamos la consulta.

Consulta GraphQL

03Consultas flexibles

La característica clave de GraphQL es la capacidad de realizar consultas flexibles en las que definimos exactamente qué datos de la API queremos obtener. Además, el lenguaje ofrece la posibilidad de crear consultas anidadas, lo que le hace ganar aún más ventaja sobre las APIs REST en estos aspectos.

Consulta GraphQL

04Agnóstico a la plataforma

Un punto de similitud entre REST y GraphQL es la independencia de la plataforma o del lenguaje de programación. Otra característica común es la idempotencia de las mismas operaciones. Tanto para la arquitectura REST como para GraphQL, las operaciones como recuperar, modificar o eliminar pueden utilizarse repetidamente sin cambiar el resultado.

REST vs GraphQL

05Elementos básicos

Los elementos básicos de GraphQL son: la mutación:

  • consulta: una operación básica de fetch en GraphQL que nos permite obtener datos. la diferencia clave es que obtenemos exactamente los datos que solicitamos estructurando la consulta para obtener sólo lo que queremos
  • mutación: una operación básica de manipulación de datos en GraphQL que nos permite crear, modificar o eliminar datos
  • esquema: la base de todo proyecto GraphQL, describe la lógica y las funcionalidades, está escrito en SDL (Schema Definition Language) y sus principales componentes son los tipos y los campos resolver: la función utilizada para conectar su esquema GraphQL con el backend, convierte las operaciones en datos y puede devolver cadenas, enteros, nulos y otros primitivos
  • resolver: resolver: la función utilizada para conectar su esquema GraphQL con el backend, convierte las operaciones en datos y puede devolver cadenas, enteros, nulos y otros primitivos
Mutación GraphQL

06Lenguaje de definición de esquemas

GraphQL utiliza su propia sintaxis: SDL o Schema Definition Language. Se utiliza para especificar el esquema de una API y sus tipos y campos. Los tipos se declaran utilizando la palabra clave type y los campos se añaden entre paréntesis para cada tipo de objeto.

Esquema GraphQL

07Comunidad en crecimiento

Aunque GraphQL todavía no es tan popular como REST, su comunidad está creciendo rápidamente. Ya ha tenido varios adoptantes importantes como GitHub, Netflix, PayPal o Shopify. Es sólo cuestión de tiempo que le sigan más.

Comunidad GraphQL

GraphQL

  • Jerarquía: Las API de REST utilizan identificadores de recursos uniformes o URI para direccionar los recursos. Esto significa que todo sigue un enfoque jerárquico simple, que está bien para los proyectos pequeños, pero puede causar muchos problemas para los proyectos más grandes o más complejos.
  • Múltiples viajes de ida y vuelta: Debido a la estructura jerárquica, una API REST suele tener varios puntos finales y, a su vez, el cliente necesita múltiples llamadas para obtener todos los datos necesarios.
  • Sobrecarga o infracarga: La estructura jerárquica y la falta de flexibilidad en las consultas hacen que las APIs REST suelan obtener demasiados datos innecesarios o necesiten múltiples llamadas para conseguir todos los datos necesarios. Obviamente, esto repercute tanto en el ancho de banda como en el rendimiento y suele agravarse cuanto más grande es la aplicación.

REST

  • No hay exceso o falta de búsqueda: GraphQL utiliza consultas flexibles o incluso anidadas que le aseguran obtener exactamente y sólo lo que necesita. No se necesitan múltiples llamadas ni se reciben datos en exceso, todo puede ser manejado por una consulta construida específicamente.
  • Un solo punto finalSimilarmente sólo necesita tener un único punto final. La estructura de la consulta se encargará de obtener lo que necesita, cómo tenga los datos organizados es irrelevante, mientras construya correctamente la consulta obtendrá todo lo que necesita incluso de un completo desorden.
  • Seguridad de tiposLos esquemas de GraphQL utilizan un sistema de tipos fuerte, lo que significa que todas las APIs expuestas al cliente están escritas en el Lenguaje de Definición de Esquemas, lo que elimina las inconsistencias de los datos y facilita la búsqueda de errores.
LeftCircle

¿Por qué utilizar GraphQL?

Para el rendimiento, la ventaja de GraphQL es obvia, ya que sólo necesita un único punto final para proporcionar todos los recursos. Obviamente, las consultas pueden volverse bastante complejas dependiendo de los datos que se necesiten. Dicho esto, mantener una sola consulta compleja sigue siendo mucho más fácil que tener un gran número de endpoints y necesitar un número aún mayor de consultas simples para obtener realmente todos los datos que necesita de ellos. Para cualquier aplicación compleja con microservicios GraphQL es simplemente mejor que REST. Para una aplicación sencilla usar REST sigue estando bien, pero si esa aplicación crece alguna vez se enfrentará a los mismos problemas mencionados anteriormente y reestructurarla para evitarlos supondrá muchos problemas.

Solicite una demostración

Experimente una demostración personalizada en vivo y descubra por qué GraphQL Editor es la elección correcta para decir adiós a lo manual.