Chuck's Academy

GraphQL con Node

Definición de Esquemas y Tipos en GraphQL

En GraphQL, los esquemas y tipos forman la columna vertebral de cualquier API. Definir correctamente el esquema y los tipos es crucial para establecer cómo los clientes pueden interactuar con tus datos. En este capítulo, profundizaremos en cómo ordenar y estructurar tu esquema y en los diversos tipos que ofrece GraphQL.

El Esquema

El esquema en GraphQL define la estructura de tus datos y las operaciones que pueden realizarse sobre ellos. Un esquema de GraphQL está compuesto por los siguientes elementos principales:

Operaciones Raíz

  • Query: Representa las operaciones de lectura y recuperación de datos.
  • Mutation: Representa las operaciones de escritura, como crear, actualizar o eliminar datos.
  • Subscription: Permite suscribirse a eventos que ocurren en tiempo real.

Ejemplo de un esquema básico:

graphql

Definición de Tipos

GraphQL es un lenguaje fuertemente tipado. Aquí exploramos algunos de los tipos más importantes que puedes usar:

Tipos Escalares

Los tipos escalares son tipos de datos primitivos que no se dividen en subcampos. Los principales tipos escalares son:

  • Int: Enteros.
  • Float: Números con punto flotante.
  • String: Cadenas de texto.
  • Boolean: Valores booleanos (true o false).
  • ID: Identificador único, normalmente usado para identificar un recurso de forma única.

Tipos de Objetos

Los tipos de objetos permiten describir una estructura de datos más compleja. Un tipo de objeto contiene un conjunto de campos, cada uno con su propio tipo.

Ejemplo de tipo de objeto:

graphql

Listas y No Nulos

GraphQL permite especificar que un campo es una lista de valores o que no puede ser nulo (null).

  • Listas: Utilizan corchetes []. Por ejemplo, [User] significa una lista de usuarios.
  • No Nulos: Utilizan el signo de exclamación !. Por ejemplo, String! significa que el campo no puede ser nulo.

Ejemplo combinando listas y no nulos:

graphql

Ejemplo Completo de Esquema

Definamos un esquema más detallado para una API de biblioteca:

graphql

En este ejemplo, tenemos dos tipos de objetos (Book y Author) y varias consultas (books, book, authors, author). También hay una mutación para crear un nuevo libro.

Resolvers para el Esquema

A continuación, definimos los resolvers correspondientes para este esquema en resolvers.js:

javascript

Configuración del Servidor

Asegúrate de que tu server.js está correctamente configurado para manejar estos nuevos tipos y resolvers:

javascript

Resumen

En este capítulo, hemos explorado cómo definir esquemas y tipos en GraphQL. Definimos consultas y mutaciones, y creamos resolvers que corresponden a esos tipos. Con estos conocimientos, estás listo para escribir consultas y mutaciones más sofisticadas, lo cual cubriremos en los capítulos siguientes.

[Placeholder: Diagrama ilustrando cómo un esquema de GraphQL define los tipos de datos y las relaciones entre ellos]


Pregúntame lo que sea