GraphQL: Qué es y por que debería empezar a utilizarlos

Publicado el 04/04/2023 por Diario Tecnología

GraphQL es un lenguaje de consulta de datos de código abierto desarrollado por Facebook en 2012. Desde su lanzamiento público en 2015, GraphQL ha ganado rápidamente popularidad en el desarrollo web, especialmente en el contexto de API RESTful. En este artículo, discutiremos por qué debería considerar utilizar GraphQL y las ventajas que ofrece en comparación con las API RESTful tradicionales. También proporcionaremos algunos ejemplos de uso.

¿Por qué usar GraphQL?

Una de las principales razones por las que debería considerar usar GraphQL es su capacidad para reducir la sobrecarga de red. En una API RESTful tradicional, cada solicitud y respuesta contiene toda la información disponible para la entidad solicitada. Esto puede resultar en una gran cantidad de información innecesaria que se transfiere de ida y vuelta entre el servidor y el cliente. En contraste, GraphQL permite que el cliente solicite solo la información que necesita en una sola consulta, lo que puede reducir significativamente la cantidad de datos que se transfieren.

Otra ventaja importante de GraphQL es su flexibilidad. En una API RESTful, el servidor define la estructura de la respuesta, lo que puede llevar a problemas si se necesita un formato de respuesta diferente. En GraphQL, el cliente define la estructura de la consulta y la respuesta, lo que significa que el servidor solo envía la información que se solicita. Esto hace que sea fácil agregar o eliminar campos de datos de la consulta sin afectar la estructura general de la API.

Además, GraphQL permite una mayor velocidad de desarrollo. Al definir la estructura de la consulta y la respuesta en el lado del cliente, los equipos de desarrollo pueden trabajar de manera más independiente y sin tener que esperar a que el equipo del servidor implemente los cambios necesarios en la API. Esto puede ayudar a reducir el tiempo de desarrollo y acelerar la entrega de nuevas características.

Ventajas de GraphQL

A continuación se presentan algunas de las principales ventajas de GraphQL en comparación con las API RESTful tradicionales:

  1. Menos sobrecarga de red: GraphQL permite que el cliente solicite solo la información necesaria en una sola consulta, lo que reduce significativamente la cantidad de datos que se transfieren.

  2. Flexibilidad: En GraphQL, el cliente define la estructura de la consulta y la respuesta, lo que significa que el servidor solo envía la información que se solicita. Esto hace que sea fácil agregar o eliminar campos de datos de la consulta sin afectar la estructura general de la API.

  3. Mayor velocidad de desarrollo: Al definir la estructura de la consulta y la respuesta en el lado del cliente, los equipos de desarrollo pueden trabajar de manera más independiente y sin tener que esperar a que el equipo del servidor implemente los cambios necesarios en la API.

  4. Facilidad de versionado: En una API RESTful tradicional, el versionado puede ser complicado ya que cada versión de la API debe ser implementada y mantenida por separado. En GraphQL, la versión de la API se puede controlar mediante el uso de campos opcionales en la consulta, lo que permite una mayor flexibilidad en el versionado.

  5. Reducción de las solicitudes de red: En una API RESTful tradicional, a menudo se requieren varias solicitudes para recuperar información relacionada. Con GraphQL, se puede recuperar toda la información relacionada en una sola consulta.

Para crear una API GraphQL, hay varias herramientas disponibles, incluyendo Apollo Server, GraphQL Yoga y Prisma. En este ejemplo, usaremos Apollo Server y Express para crear una API GraphQL básica y consumirla con una aplicación de cliente simple.

Paso 1: Instalación

Primero, necesitamos instalar las dependencias necesarias. Ejecute el siguiente comando en su terminal:

npm install apollo-server-express express graphql
 

Paso 2: Configuración del servidor

En su archivo index.js, importe las dependencias necesarias y configure el servidor de Apollo y Express. Defina un tipo básico para los datos que se devolverán en la API.

const express = require('express');
const { ApolloServer, gql } = require('apollo-server-express');

const app = express();

const typeDefs = gql`
  type Query {
    hello: String
  }
`;

const resolvers = {
  Query: {
    hello: () => 'Hola mundo!',
  },
};

const server = new ApolloServer({ typeDefs, resolvers });

server.applyMiddleware({ app });

app.listen({ port: 4000 }, () =>
  console.log(`Servidor listo en http://localhost:4000${server.graphqlPath}`)
);

Paso 3: Consumir la API GraphQL

Para consumir la API GraphQL, podemos crear una aplicación cliente simple que se conecte a la API y solicite datos. En este ejemplo, usaremos la biblioteca graphql-request.

Primero, instalemos la biblioteca:

npm install graphql-request

Luego, creemos un archivo client.js e importemos la biblioteca y definamos nuestra consulta.

const { request, gql } = require('graphql-request');

const query = gql`
  {
    hello
  }
`;

Finalmente, enviemos la consulta al servidor e imprimamos la respuesta:

request('http://localhost:4000/graphql', query).then((data) =>
  console.log(data)
);