Volver al diccionario
Desarrollo Web
GraphQL
GraphQL es el lenguaje de consulta para APIs de Facebook. Aprende qué es, sus ventajas sobre REST, cómo escribir queries y mutations con ejemplos de código reales.
Qué es GraphQL
GraphQL es un lenguaje de consulta para APIs desarrollado por Facebook. A diferencia de REST, donde cada endpoint devuelve una estructura fija, GraphQL permite al cliente especificar exactamente qué datos necesita en una única petición.
Ventajas sobre REST
Una sola petición
En REST, obtener datos relacionados requiere múltiples llamadas. En GraphQL, una query obtiene todo.
Sin over-fetching
Solo recibes los campos que pides, no más.
Sin under-fetching
No necesitas hacer llamadas adicionales para datos relacionados.
Schema tipado
El schema define tipos, documentando la API automáticamente.
Ejemplo de query
\\\`graphql
query {
producto(id: "123") {
nombre
precio
imagenes {
url
alt
}
categoria {
nombre
}
}
}
\\\`
Respuesta:
\\\`json
{
"data": {
"producto": {
"nombre": "Zapatillas Pro",
"precio": 99.99,
"imagenes": [
{"url": "/img1.jpg", "alt": "Vista frontal"}
],
"categoria": {"nombre": "Calzado"}
}
}
}
\\\`
Mutations
Para modificar datos:
\\\`graphql
mutation {
crearProducto(input: {nombre: "Nuevo", precio: 50}) {
id
nombre
}
}
\\\`
Subscriptions en tiempo real
Además de queries y mutations, GraphQL soporta subscriptions para datos en tiempo real via WebSocket:
\\\`graphql
subscription {
pedidoActualizado(clienteId: "456") {
id
estado
ultimaActualizacion
}
}
\\\`
Implementaciones y herramientas
- Apollo Server: La implementación de servidor más popular (Node.js, TypeScript)
- Apollo Client: Cliente para React con caché integrada
- Relay: Cliente de Meta, más opinado y optimizado para grandes aplicaciones
- Hasura: GraphQL automático sobre PostgreSQL en minutos, sin código backend
- GraphQL Yoga: Servidor GraphQL moderno y flexible
- Shopify GraphQL API: La API principal de Shopify es GraphQL
- WooCommerce WPGraphQL: Plugin que añade API GraphQL a WordPress
Cuándo usar GraphQL vs REST
Usa GraphQL cuando:
- El frontend necesita datos de múltiples recursos en una sola petición
- Tienes múltiples clientes (web, móvil, TV) con necesidades de datos diferentes
- Quieres documentación y tipado automático
- Desarrollas un headless ecommerce con datos de producto complejos
Usa REST cuando:
- La API es simple con pocos tipos de recursos
- El equipo está más familiarizado con REST
- Necesitas caché HTTP estándar sin configuración extra
- Los clientes son simples y los endpoints predecibles son suficientes
Preguntas frecuentes
¿GraphQL es más rápido que REST?
No necesariamente. GraphQL puede ser más eficiente en términos de transferencia de datos (recibes solo lo que pides), pero tiene sobrecarga en el servidor al parsear y resolver queries complejas. El rendimiento depende de la implementación, los resolvers y el uso del DataLoader para evitar el problema N+1.
¿Qué es el problema N+1 en GraphQL?
Es un problema de rendimiento donde para obtener una lista de N elementos, el servidor hace 1 query para la lista y luego N queries adicionales para cada elemento relacionado. La solución es usar DataLoader, que agrupa las queries en batches.
¿GraphQL reemplazará a REST?
GraphQL no está reemplazando a REST sino complementándolo. REST sigue siendo dominante para APIs públicas y simples. GraphQL es la elección preferida para APIs de frontend complejas, headless ecommerce y sistemas con múltiples clientes.
Términos relacionados
Necesitas ayuda con tu ecommerce?
Somos expertos en desarrollo de tiendas online. Cuéntanos tu proyecto y te asesoramos sin compromiso.
Contactar con Ganton