0Pricing
React Academy · Lección

Fundamentos de GraphQL para desarrolladores de React

Comprender las queries, mutaciones, suscripciones y esquemas de GraphQL desde la perspectiva de un desarrollador frontend

Fundamentos de GraphQL para desarrolladores de React es una lección gratuita de React Academy en CoddyKit. Esta es la lección 1 de 4. Puedes leer la lección completa abajo gratuitamente — luego la practicas en el navegador con un editor de código integrado y un tutor de IA 24/7. Forma parte de la ruta de aprendizaje de React Academy, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de React Academy incluye 4 lecciones en total.

GraphQL frente a REST

REST expone endpoints con una estructura fija: GET /users/:id devuelve el objeto de usuario completo, independientemente de lo que necesite el cliente. GraphQL permite que los clientes especifiquen exactamente qué campos desean, lo que elimina la sobrecarga de datos (recibir demasiados datos) y la falta de datos (no recibir suficientes y tener que realizar varias solicitudes).

Una sola consulta de GraphQL puede obtener un usuario, sus publicaciones y el autor de cada publicación en una sola ida y vuelta.

El esquema de GraphQL

Toda API de GraphQL se define mediante un esquema escrito en Schema Definition Language (SDL). El esquema declara los tipos, sus campos y los tipos raíz Query, Mutation y Subscription con los que pueden operar los clientes.

El esquema es el contrato entre el cliente y el servidor. Los equipos de frontend y backend pueden trabajar en paralelo una vez acordado el esquema.

Escritura de una consulta de GraphQL

Una consulta de GraphQL selecciona campos: { user(id: "1") { name email posts { title } } }. Los campos anidados recorren las relaciones en una sola solicitud. Los alias cambian el nombre de los campos: { me: user(id: "1") { name } }. Los fragmentos reutilizan selecciones de campos en varias consultas.

Las variables permiten reutilizar las consultas: query GetUser($id: ID!) { user(id: $id) { name } } con variables: { id: "1" }.

Resolvers en el servidor

Cada campo del esquema de GraphQL tiene una función resolver en el servidor. Cuando un cliente consulta user.name, el resolver de user obtiene el objeto de usuario y el resolver de name (o el resolver predeterminado) devuelve el campo name.

Esta resolución a nivel de campo es la que permite a GraphQL obtener con precisión solo los datos solicitados.

El problema N+1

Si consulta una lista de 100 publicaciones y cada publicación incluye a su autor, la implementación ingenua ejecuta 100 consultas independientes a la base de datos para obtener los autores. Este problema N+1 hace que las API de GraphQL sean lentas si no se optimizan.

DataLoader resuelve el problema N+1 agrupando todas las búsquedas de autores en una sola consulta a la base de datos mediante una caché por solicitud y una función de agrupación.

GraphQL Playground y Apollo Studio

Apollo Studio y GraphQL Playground son interfaces de usuario basadas en el navegador para explorar interactivamente una API de GraphQL. Autocompletan los campos a partir del esquema, muestran los resultados de las consultas y presentan la documentación de los tipos integrada en la interfaz.

Usar el playground es la forma más rápida de comprender una API de GraphQL desconocida antes de escribir código del cliente.

Introspección de tipos

Las API de GraphQL exponen su propio esquema mediante una consulta de introspección: { __schema { types { name } } }. Los clientes pueden consultar el propio esquema para descubrir los tipos, campos y argumentos disponibles.

Las herramientas de generación de código como graphql-codegen usan la introspección para generar automáticamente tipos de TypeScript que coinciden con el esquema de la API.

Mutaciones y suscripciones

Las mutaciones de GraphQL modifican los datos: mutation CreatePost($input: PostInput!) { createPost(input: $input) { id title } }. Las suscripciones establecen una conexión persistente (normalmente mediante WebSocket) y envían actualizaciones: subscription { postAdded { id title } }.

Los tres tipos raíz (Query, Mutation, Subscription) utilizan la misma sintaxis de selección de campos.

Cuándo destaca GraphQL frente a REST

GraphQL resulta excelente en aplicaciones con requisitos de datos complejos y anidados, varios tipos de clientes (móvil, web y TV) que necesitan distintos subconjuntos de campos, o API que evolucionan rápidamente y en las que se prefiere retirar campos en desuso en lugar de versionar endpoints.

REST es más sencillo para API CRUD con formas de recursos predecibles y planas, además de ofrecer excelentes posibilidades de caché HTTP mediante ETags y encabezados de caché.

Clientes de GraphQL: Apollo, URQL y React Query

Apollo Client es el cliente de GraphQL con más funcionalidades: caché normalizada, gestión del estado local, suscripciones y enlaces para gestionar errores. URQL es más ligero, con una caché de documentos y una API más sencilla. React Query con graphql-request es el enfoque más simple para consultas y mutaciones básicas sin una gestión avanzada de la caché.

Elija en función de sus requisitos de caché: use una caché normalizada para entidades compartidas entre consultas (Apollo), o una caché de documentos más sencilla para consultas independientes (URQL o React Query).

Ejemplo de SDL

Un SDL sencillo: type User { id: ID! name: String! posts: [Post!]! } type Post { id: ID! title: String! author: User! } type Query { user(id: ID!): User users: [User!]! }. Los signos de exclamación indican campos que no admiten valores nulos.

Este esquema indica al cliente exactamente qué campos existen en cada tipo y qué consultas están disponibles, lo que permite generar código con seguridad de tipos.

Over-fetching y under-fetching en GraphQL

¿Qué significa "over-fetching" en el contexto de REST frente a GraphQL?

Resumen de la lección

GraphQL permite que los clientes soliciten exactamente los campos que necesitan (sin over-fetching ni under-fetching) mediante un lenguaje de consultas definido por un esquema. Los resolvers responden a cada campo; DataLoader resuelve el problema N+1. La introspección permite generar tipos de TypeScript. Apollo Client, URQL y React Query son los principales clientes de GraphQL compatibles con React.

Elija GraphQL para requisitos de datos complejos, anidados y destinados a varios clientes; elija REST para operaciones CRUD sencillas con formas predecibles.

Preguntas frecuentes

¿La lección «Fundamentos de GraphQL para desarrolladores de React» es gratis?

Sí — el texto completo de «Fundamentos de GraphQL para desarrolladores de React» es gratis para leer aquí en la web. Para practicarla de forma interactiva (editor de código integrado y tutor de IA 24/7) y desbloquear el resto del curso de React Academy, actualiza a CoddyKit PRO. El curso de React Academy incluye 4 lecciones en total.

¿Qué aprenderé en «Fundamentos de GraphQL para desarrolladores de React»?

Comprender las queries, mutaciones, suscripciones y esquemas de GraphQL desde la perspectiva de un desarrollador frontend Practicas React Academy con código real que ejecutas directamente en el navegador, y un tutor de IA 24/7 responde tus preguntas mientras trabajas en la lección.

¿Necesito experiencia previa para empezar React Academy?

No se requiere experiencia previa. React Academy en CoddyKit está estructurado para principiantes hasta estudiantes avanzados, así que puedes empezar aquí o desde el inicio y avanzar a tu ritmo. Esta es la lección 1 de 4.

¿Cuánto tiempo toma la lección «Fundamentos de GraphQL para desarrolladores de React»?

La mayoría de las lecciones de CoddyKit toman alrededor de 5–10 minutos. Cada una es compacta e interactiva, así que avanzas constantemente y retomas exactamente por donde dejaste en la web y la app.

¿Puedo escribir y ejecutar código en esta lección de React Academy?

Sí. Cada lección de React Academy incluye un editor de código integrado, así que escribes y ejecutas código real directamente en tu navegador y obtienes retroalimentación instantánea de IA — sin configuración local necesaria.

Todas las lecciones de este curso

  1. Fundamentos de GraphQL para desarrolladores de React
  2. Configurar Apollo Client en React
  3. Hooks useQuery y useMutation
  4. Caché de Apollo: normalización y actualizaciones
← Volver a React Academy