Ejemplos
query { user(id: 42) { name email posts { title createdAt } } }mutation { createPost(title: "Hello", body: "World") { id createdAt } }subscription { postCreated { id title author { name } } }query GetUser($id: ID!) { user(id: $id) { name posts(first: 10) { edges { node { title } } } } }{ users { id name } posts: allPosts { title } }
Preguntas frecuentes
¿GraphQL reemplaza a REST?
No necesariamente. GraphQL resuelve problemas específicos (over-fetching, múltiples requests, flexibilidad). REST sigue siendo mejor para APIs públicas simples, cache HTTP, y cuando no necesitás queries complejas. Muchas empresas usan ambos según el caso.
¿Cómo manejo autenticación en GraphQL?
Igual que REST: enviás un token (JWT, OAuth) en el header Authorization. Los resolvers verifican permisos antes de devolver datos. Librerías como graphql-shield permiten definir reglas de autorización declarativas a nivel campo o tipo.
¿Qué es el problema N+1 y cómo lo soluciono?
Si una query pide users y sus posts, sin batching harías 1 query para users + N queries (una por user) para posts. DataLoader agrupa las N queries en una sola: SELECT * FROM posts WHERE user_id IN (...). Es esencial en GraphQL; sin DataLoader, las queries anidadas son lentas.