Spring y su ecosistema hacen el desarrollo de aplicaciones muy eficiente, y la integración con GraphQL permite usar una manera moderna, flexible y potente de trabajar con datos. GraphQL ofrece un único endpoint para todas las operaciones (queries y mutations), facilitando la interacción entre cliente y servidor. Combinado con Spring obtenemos una herramienta potente para desarrollar APIs que puede reemplazar o complementar REST con facilidad.
1. Instalación de Spring GraphQL: vamos a crear el proyecto
Empecemos configurando un nuevo proyecto Spring Boot que soporte GraphQL. Usaremos Spring Initializr, que permite crear rápidamente una plantilla de proyecto adecuada.
Usar Spring Initializr
- Abre Spring Initializr.
- Indica:
- Project: Maven (también puedes usar Gradle si lo prefieres).
- Language: Java.
- Spring Boot: versión 2.7.0 o superior (GraphQL está soportado a partir de 2.7.0).
- Añade las dependencias necesarias:
- Spring Web
- Spring Boot Starter GraphQL
- Spring Boot DevTools (para recarga rápida de la aplicación — muy útil durante el desarrollo).
- Descarga la plantilla del proyecto e impórtala en tu IDE favorito (IntelliJ IDEA, Eclipse, etc.).
Ejemplo de pom.xml
Tu archivo pom.xml debería verse aproximadamente así:
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>com.graphql-java-kickstart</groupId>
<artifactId>graphql-spring-boot-starter</artifactId>
<version>12.0.0</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-graphql</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<scope>runtime</scope>
<optional>true</optional>
</dependency>
</dependencies>
¡Todo listo para empezar! Ahora vamos a configurar el servidor GraphQL.
2. Configuración del servidor GraphQL
GraphQL requiere la definición del esquema y de los endpoints. Spring Boot simplifica este proceso y conecta automáticamente el esquema y el punto de entrada para GraphQL.
Carpeta para el esquema
Crea la carpeta graphql en src/main/resources. En esa carpeta guardaremos los esquemas de GraphQL.
Definimos el primer esquema
Crea el archivo schema.graphqls dentro de la carpeta graphql. En ese archivo describiremos los tipos y las operaciones disponibles. Esto es un ejemplo mínimo:
type Query {
hello: String
}
Aquí tienes una operación simple hello que devuelve una String. Cuando el esquema esté listo, configuraremos el manejador de la consulta.
Configuración del endpoint
Por defecto Spring Boot GraphQL configura el endpoint /graphql para manejar todas las peticiones GraphQL. Para comprobarlo, arranca tu aplicación y abre en el navegador http://localhost:8080/graphql.
En este punto verás que el servidor ya está listo para recibir peticiones. Ahora pasemos a manejar nuestra primera consulta.
3. Creación de resolvers para Query
GraphQL usa "resolvers" para mapear las operaciones (queries, mutations) a la lógica en Java. Para nuestra primera query hello crearemos un resolver.
Creamos el resolver
Añade una nueva clase a tu proyecto:
package com.example.graphql;
import org.springframework.graphql.data.method.annotation.QueryMapping;
import org.springframework.stereotype.Controller;
@Controller
public class GreetingController {
@QueryMapping
public String hello() {
return "¡Hola desde GraphQL!";
}
}
Aquí:
@Controller— indica a Spring que esta clase manejará las peticiones.@QueryMapping— enlaza el método con nuestra queryhellodefinida en el esquema.
4. Probando queries de GraphQL
Podemos probar las consultas usando la herramienta integrada GraphQL — GraphiQL, que viene integrada en Spring Boot.
- Arranca la aplicación.
- En el navegador ve a:
http://localhost:8080/graphiql. - Pega la siguiente consulta:
query { hello }
Si todo está bien configurado verás:
{
"data": {
"hello": "¡Hola desde GraphQL!"
}
}
¡Enhorabuena! Acabas de crear tu primera aplicación con GraphQL.
5. Configuración del IDE para trabajar con GraphQL
Plugin para IntelliJ IDEA
Si usas IntelliJ IDEA, una herramienta muy útil para trabajar con GraphQL es el plugin GraphQL disponible en JetBrains Marketplace. Te ayuda a:
- Validar automáticamente tu esquema de GraphQL.
- Resaltar errores y autocompletar consultas.
- Probar queries directamente desde el IDE.
Instalación:
- Abre la configuración de IntelliJ IDEA:
File > Settings > Plugins. - Busca el plugin GraphQL y instálalo.
- Reinicia el IDE.
Ahora puedes editar y probar tus esquemas y consultas con mayor facilidad.
6. Configuración avanzada del servidor GraphQL
El servidor GraphQL de Spring Boot soporta configuración mediante application.properties o application.yml. Por ejemplo:
spring.graphql.graphiql.enabled=true
spring.graphql.schema.printer.enabled=true
Aquí:
spring.graphql.graphiql.enabled=trueactiva la interfaz integrada GraphiQL (habitualmente activada por defecto).spring.graphql.schema.printer.enabled=truepermite imprimir tu esquema en los logs al arrancar la aplicación (útil para comprobarlo).
7. Errores comunes y cómo solucionarlos
- Error: "No schema found". Asegúrate de que el archivo de esquema
schema.graphqlsestá ensrc/main/resources/graphql— esta es la ruta estándar para esquemas GraphQL en Spring Boot. - Error: "Query [name] not found". Si una query del esquema no encuentra su resolver, verifica que los nombres coincidan y que el método esté anotado con
@QueryMapping. - Error: "Circular dependency". Esto puede ocurrir si tienes varios beans con dependencias complejas entre sí. Para solucionarlo prueba a usar la anotación
@Lazyo revisa la arquitectura para romper el ciclo.
Ahora estás listo para trabajar con esquemas, queries y mutations más complejos. Hemos dado el primer paso en la integración de GraphQL con Spring Boot. En las siguientes lecciones profundizaremos en la creación de queries y mutations más avanzadas, y en subscriptions.
GO TO FULL VERSION