Contenido del curso
Fundamentos de GraphQL
Tipado en GraphQL
- 6

Sistema de Tipado en GradQL: Queries y Mutations
11:04 min - 7

Tipos de Datos Básicos en GraphQL: Int, Float, String, Boolean, ID
Viendo ahora - 8

Validación de Nullables y Listas en GradQL
09:14 min - 9

Creación y Manejo de Tipos de Datos en GraphQL
08:50 min - 10

Integración de Archivos GradQL y Live Reloading en Node.js
09:04 min
GraphQL en la Tienda con Express.js
- 11

Organización de Resolvers con el Principio de Responsabilidad Única
12:18 min - 12

Conexión de Base de Datos y Consultas en GraphQL con SQLite
07:30 min - 13

Creación de productos con mutations e inputs en GraphQL
11:19 min - 14

Uso de Variables y Alias en GradQL para Optimizar Consultas
10:57 min - 15

Actualización y Eliminación de Productos con GraphQL
12:41 min - 16

Anidamiento de Entidades con GradQL en APIs
07:32 min
Autenticación con GraphQL y JSON Web Tokens
- 17

Autenticación de Usuarios con JWT en GraphQL y Node.js
18:01 min - 18

Creación de Mutación para Categorías con Validación de Roles
06:15 min - 19

Autenticación de JSON Web Tokens en GraphQL con Passport
08:07 min - 20

Validación de Roles y Sesiones con GradQL y Express
10:22 min - 21

Validación de Datos en GradQL con Scalars Personalizados
15:19 min
Bonus
Conclusiones
Tipos de Datos Básicos en GraphQL: Int, Float, String, Boolean, ID
Resumen
Dominar el sistema de tipos en GraphQL es fundamental para construir APIs robustas y confiables. Los scalar types son los bloques básicos que definen qué tipo de dato puede entrar y salir en cada operación, y conocerlos a fondo te permite aprovechar la validación automática que GraphQL ofrece tanto en el backend como en el frontend.
¿Cuáles son los cinco scalar types que ofrece GraphQL?
GraphQL cuenta con exactamente cinco tipos escalares nativos [01:05]. Cada uno se escribe con la primera letra en mayúscula y representa un tipo de dato específico:
- Int: números enteros, sin decimales.
- Float: números con precisión decimal, ideales para precios o medidas.
- String: cadenas de texto, el tipo más común para representar palabras o frases.
- Boolean: valores lógicos que solo pueden ser
trueofalse. - ID: se comporta como un string, pero su propósito es representar un identificador único. En ocasiones se utiliza como sistema de caché [01:42].
Aunque son pocos, estos tipos cubren la mayoría de escenarios básicos. Más adelante es posible extenderlos y crear tipos de datos personalizados para modelar información más compleja.
¿Cómo se definen queries y resolvers para cada tipo?
Para cada query declarada en las type definitions, es necesario crear un resolver que devuelva un valor del tipo correcto [02:22]. Por ejemplo, si declaras un query llamado getInt que retorna Int, su resolver debe devolver un número entero. Lo mismo aplica para getFloat, getString, getBoolean y getID.
Al ejecutar varias consultas en el playground, puedes verificar que:
- No necesitas separar las consultas con comas.
- Cada query se resuelve en paralelo por su respectivo resolver.
- Puedes ejecutar múltiples queries al mismo tiempo, seleccionando solo las que necesites [03:30].
Esta flexibilidad significa que el cliente decide exactamente qué datos solicitar en cada petición.
¿Se pueden usar scalar types como argumentos de entrada?
Los scalar types no solo sirven para definir el valor de retorno, también funcionan como tipado de variables de entrada [04:00]. Por ejemplo, puedes declarar que getInt recibe un argumento llamado age de tipo Int, o que getFloat recibe un argumento price de tipo Float.
Dentro del resolver, estos valores llegan en un segundo parámetro comúnmente llamado args. Desde ahí accedes a cada argumento por su nombre, como args.age o args.price [04:30].
Al revisar la documentación autogenerada en el playground, puedes confirmar que cada query muestra sus parámetros de entrada con el tipo esperado.
¿Cómo funciona la validación automática de tipos en GraphQL?
Una de las ventajas más poderosas es la validación automática en ambas direcciones: entrada y salida [05:15].
- Validación de salida: si declaras que un resolver retorna
Stringpero devuelves un array, GraphQL lanza un error indicando que la información retornada no coincide con el contrato definido. - Validación de entrada: si un argumento espera un
Inty el cliente envía unString, la consulta falla antes de llegar al resolver [05:45].
Esto significa que tanto el equipo de backend como las aplicaciones frontend (ya sea en Angular, React o móvil) deben respetar las firmas de tipado. Si el frontend intenta enviar un dato con el tipo incorrecto, el servidor GraphQL rechaza la petición de forma automática [06:10].
En la práctica, esto equivale a tener una capa de integridad de datos sin escribir validaciones manuales adicionales. El contrato de tipos actúa como un acuerdo entre quien consume y quien provee la API.
¿Por qué importa el tipado estricto en tus APIs?
El tipado estricto garantiza que:
- Los errores se detectan antes de procesar la lógica de negocio.
- La documentación se genera automáticamente y siempre está actualizada.
- El frontend sabe exactamente qué enviar y qué esperar como respuesta.
Con estos cinco scalar types como base, el siguiente paso es aprender a trabajar con listas y con valores no nulos, lo que permite modelar estructuras de datos más completas y seguras. ¿Ya probaste enviar un tipo incorrecto en el playground para ver cómo responde GraphQL? Comparte tu experiencia en los comentarios.