Introducción
GraphiQL y Playground son herramientas interactivas que permiten a los desarrolladores explorar y probar sus APIs GraphQL de manera eficiente. Estas herramientas proporcionan una interfaz gráfica para escribir, ejecutar y depurar consultas y mutaciones de GraphQL.
¿Qué es GraphiQL?
GraphiQL es un IDE (Entorno de Desarrollo Integrado) de código abierto para GraphQL. Fue desarrollado por Facebook y es ampliamente utilizado para interactuar con APIs GraphQL. Algunas de sus características clave incluyen:
- Autocompletado de consultas: Ayuda a escribir consultas más rápido y con menos errores.
- Documentación en línea: Proporciona acceso a la documentación del esquema GraphQL directamente en la interfaz.
- Historial de consultas: Permite revisar y reutilizar consultas anteriores.
Instalación y Configuración de GraphiQL
Para utilizar GraphiQL, primero necesitas tener un servidor GraphQL en funcionamiento. Aquí hay un ejemplo de cómo configurar GraphiQL en un servidor Express con express-graphql:
const express = require('express');
const { graphqlHTTP } = require('express-graphql');
const { buildSchema } = require('graphql');
const app = express();
// Definir el esquema
const schema = buildSchema(`
type Query {
hello: String
}
`);
// Definir los resolvers
const root = {
hello: () => 'Hello, world!',
};
// Configurar GraphiQL
app.use('/graphql', graphqlHTTP({
schema: schema,
rootValue: root,
graphiql: true,
}));
app.listen(4000, () => console.log('Servidor GraphQL ejecutándose en http://localhost:4000/graphql'));Uso de GraphiQL
- Abrir GraphiQL: Una vez que el servidor esté en funcionamiento, abre tu navegador y navega a
http://localhost:4000/graphql. - Escribir una consulta: En el editor de GraphiQL, escribe una consulta como la siguiente:
{ hello } - Ejecutar la consulta: Haz clic en el botón de "Play" para ejecutar la consulta y ver la respuesta en el panel de resultados.
¿Qué es GraphQL Playground?
GraphQL Playground es otra herramienta popular para interactuar con APIs GraphQL. Fue desarrollada por Prisma y ofrece una experiencia de usuario mejorada con características adicionales como:
- Múltiples pestañas: Permite trabajar con varias consultas al mismo tiempo.
- Configuración avanzada: Soporta configuraciones avanzadas como encabezados HTTP personalizados.
- Temas personalizables: Ofrece opciones de personalización de la interfaz.
Instalación y Configuración de GraphQL Playground
GraphQL Playground puede ser utilizado de manera similar a GraphiQL. Aquí hay un ejemplo de cómo configurarlo en un servidor Express:
const express = require('express');
const { graphqlHTTP } = require('express-graphql');
const { buildSchema } = require('graphql');
const { express: playground } = require('graphql-playground/middleware');
const app = express();
// Definir el esquema
const schema = buildSchema(`
type Query {
hello: String
}
`);
// Definir los resolvers
const root = {
hello: () => 'Hello, world!',
};
// Configurar GraphQL Playground
app.use('/graphql', graphqlHTTP({
schema: schema,
rootValue: root,
graphiql: false, // Desactivar GraphiQL
}));
app.get('/playground', playground({ endpoint: '/graphql' }));
app.listen(4000, () => console.log('Servidor GraphQL ejecutándose en http://localhost:4000/playground'));Uso de GraphQL Playground
- Abrir GraphQL Playground: Una vez que el servidor esté en funcionamiento, abre tu navegador y navega a
http://localhost:4000/playground. - Escribir una consulta: En el editor de GraphQL Playground, escribe una consulta como la siguiente:
{ hello } - Ejecutar la consulta: Haz clic en el botón de "Play" para ejecutar la consulta y ver la respuesta en el panel de resultados.
Comparación entre GraphiQL y GraphQL Playground
| Característica | GraphiQL | GraphQL Playground |
|---|---|---|
| Autocompletado | Sí | Sí |
| Documentación en línea | Sí | Sí |
| Historial de consultas | Sí | Sí |
| Múltiples pestañas | No | Sí |
| Configuración avanzada | Limitada | Sí |
| Temas personalizables | No | Sí |
| Desarrollador | Prisma |
Ejercicio Práctico
Ejercicio 1: Configurar y Usar GraphiQL
- Configura un servidor GraphQL utilizando
express-graphql. - Habilita GraphiQL en tu servidor.
- Escribe y ejecuta una consulta simple en GraphiQL.
Ejercicio 2: Configurar y Usar GraphQL Playground
- Configura un servidor GraphQL utilizando
express-graphql. - Habilita GraphQL Playground en tu servidor.
- Escribe y ejecuta una consulta simple en GraphQL Playground.
Soluciones
Solución al Ejercicio 1
const express = require('express');
const { graphqlHTTP } = require('express-graphql');
const { buildSchema } = require('graphql');
const app = express();
const schema = buildSchema(`
type Query {
hello: String
}
`);
const root = {
hello: () => 'Hello, world!',
};
app.use('/graphql', graphqlHTTP({
schema: schema,
rootValue: root,
graphiql: true,
}));
app.listen(4000, () => console.log('Servidor GraphQL ejecutándose en http://localhost:4000/graphql'));Solución al Ejercicio 2
const express = require('express');
const { graphqlHTTP } = require('express-graphql');
const { buildSchema } = require('graphql');
const { express: playground } = require('graphql-playground/middleware');
const app = express();
const schema = buildSchema(`
type Query {
hello: String
}
`);
const root = {
hello: () => 'Hello, world!',
};
app.use('/graphql', graphqlHTTP({
schema: schema,
rootValue: root,
graphiql: false,
}));
app.get('/playground', playground({ endpoint: '/graphql' }));
app.listen(4000, () => console.log('Servidor GraphQL ejecutándose en http://localhost:4000/playground'));Conclusión
GraphiQL y GraphQL Playground son herramientas esenciales para cualquier desarrollador que trabaje con GraphQL. Ambas ofrecen características robustas para escribir, ejecutar y depurar consultas y mutaciones de GraphQL. La elección entre una y otra dependerá de tus necesidades específicas y preferencias personales. Con estas herramientas, puedes mejorar significativamente tu flujo de trabajo y eficiencia al desarrollar APIs GraphQL.
Curso de GraphQL
Módulo 1: Introducción a GraphQL
- ¿Qué es GraphQL?
- GraphQL vs REST
- Configuración de un Servidor GraphQL
- Conceptos Básicos del Esquema de GraphQL
Módulo 2: Conceptos Fundamentales
Módulo 3: Diseño Avanzado de Esquemas
Módulo 4: Trabajando con Datos
Módulo 5: Rendimiento y Seguridad
Módulo 6: Herramientas y Ecosistema
Módulo 7: Pruebas y Despliegue
- Pruebas Unitarias de Resolvers
- Pruebas de Integración
- Integración Continua
- Despliegue de Servidores GraphQL
