Uso de Variables y Alias en GradQL para Optimizar Consultas

Clase 14 de 24Curso de GraphQL con Node.js

Contenido del curso

Resumen

GraphQL ofrece herramientas poderosas que permiten a los clientes consumir datos con total flexibilidad, sin depender de cambios en el backend. Dos de esas herramientas son los alias y las variables, que transforman la manera en que se organizan y ejecutan las consultas y mutations.

¿Qué son los alias y por qué cambian la forma de consumir GraphQL?

Cuando ejecutas un query o una mutation en GraphQL, el resultado se retorna con el nombre de la función definida en el backend. Por ejemplo, si tu query se llama products, el resultado llega bajo esa misma clave. Lo mismo ocurre con una mutation como addProduct [01:00].

Pero, ¿qué pasa si el cliente necesita que ese campo se llame diferente? Aquí entran los alias. Un alias permite renombrar el campo de retorno directamente desde la consulta, sin modificar nada en el servidor [01:42].

graphql myProducts: products { id name }

Con esta sintaxis, el resultado ya no llega como products, sino como myProducts. El backend permanece intacto; es el cliente quien decide cómo recibir la información [02:15].

¿Cómo resolver múltiples consultas en un solo request?

Una de las grandes ventajas de GraphQL frente a una arquitectura REST es la capacidad de ejecutar varias consultas en una sola petición. Por ejemplo, puedes solicitar un producto específico y la lista completa de productos al mismo tiempo [03:20]:

graphql { product(id: 1) { id name } myProducts: products { id name } }

En REST necesitarías dos endpoints separados. En GraphQL, todo se resuelve en un solo request [03:50].

¿Cómo comparar dos productos sin pedir un nuevo endpoint?

Imagina que necesitas comparar dos productos en una vista de tu aplicación. Si llamas dos veces al mismo query product, habrá un conflicto de nombres. Los alias solucionan esto de forma elegante [04:20]:

graphql { p1: product(id: 1) { id name } p2: product(id: 2) { id name } }

  • p1 y p2 actúan como alias para diferenciar cada resultado.
  • En REST esto requeriría un nuevo endpoint con lógica adicional en el backend.
  • Con GraphQL, el equipo frontend o móvil resuelve esto de forma independiente [04:55].

Esta independencia entre equipos es una de las razones por las cuales GraphQL brinda gran flexibilidad. Los clientes en Android, iOS o aplicaciones web no dependen del backend para crear nuevas vistas o funcionalidades.

¿Cómo funcionan las variables en GraphQL?

Las variables permiten organizar y enviar datos de manera más limpia y segura. En lugar de escribir los valores directamente dentro de la mutation, los separas en un bloque de query variables en formato JSON [06:10].

Primero, defines un nombre para la operación y declaras las variables con el símbolo $:

graphql mutation createProduct($dto: CreateProductDTO!) { addProduct(dto: $dto) { id name } }

Luego, en el panel de query variables, envías los datos en formato JSON [07:05]:

{ "dto": { "name": "nuevo P3", "description": "descripción del producto" } }

  • Las variables usan el signo pesos ($) para identificarse.
  • Puedes reutilizar los inputs ya definidos en tu esquema, como CreateProductDTO.
  • El signo ! indica que la variable es obligatoria.

¿Dónde se pueden usar las variables?

Esta funcionalidad no está limitada al playground de GraphQL. También puedes utilizar variables desde herramientas como Insomnia o Postman [08:00]. Ambas ofrecen una interfaz de variables donde pegas el JSON correspondiente y ejecutas la mutation de la misma forma.

Los clientes que consumen la API suelen preferir este formato porque facilita la validación de datos y hace las consultas más compactas y legibles [08:30].

¿Por qué estas características no requieren cambios en el backend?

Tanto los alias como las variables son capacidades nativas del motor de GraphQL. No necesitas escribir código adicional en el servidor para habilitarlas [09:00].

  • Los alias permiten que cada cliente nombre los resultados como prefiera.
  • Las variables organizan los parámetros de entrada de forma estructurada.
  • Ambas herramientas fomentan la independencia entre equipos de frontend y backend.

Esto reduce la carga de trabajo del equipo backend, que ya no necesita crear endpoints personalizados para cada caso de uso. El poder está en manos de quien consume el servicio.

¿Ya estás usando alias o variables en tus proyectos con GraphQL? Comparte tu experiencia en los comentarios.