Tutorial de GraphQL: Introducción a Spring for GraphQL

Este es un tutorial completo de GraphQL. Desmitificaremos sus conceptos y te guiaremos para empezar con Spring for GraphQL.

Daniel Costa

Daniel Costa

15 April 2025

Tutorial de GraphQL: Introducción a Spring for GraphQL

En el panorama en constante evolución del desarrollo web, GraphQL ha surgido como una alternativa poderosa a las API REST tradicionales, ofreciendo un enfoque más flexible y eficiente para la obtención de datos. Si estás ansioso por explorar esta tecnología creativa e integrarla perfectamente con Spring, has llegado al lugar correcto.

Bienvenido a nuestro completo tutorial de GraphQL, donde nos embarcaremos en un viaje para desmitificar los conceptos de GraphQL y guiarte a través del proceso de comenzar con Spring para GraphQL.

¿Qué es Spring GraphQL y sus características clave?

Spring GraphQL es una extensión del popular Spring Framework que permite a los desarrolladores crear API basadas en GraphQL sin problemas. Combina el poder de la facilidad de desarrollo de Spring Boot con la flexibilidad y eficiencia de GraphQL, lo que lo convierte en una opción ideal para desarrollar API modernas.

Las características clave de Spring GraphQL incluyen:

¿Cómo configurar tu entorno?

Antes de comenzar tu viaje con GraphQL y Spring, asegúrate de que tu configuración esté lista. Aquí te mostramos cómo puedes preparar tu entorno para construir un proyecto Spring Boot con GraphQL:

Requisitos previos:

Creación de un proyecto Spring Boot:

Spring Initializr: Ve a start.spring.io, tu punto de partida para los proyectos Spring Boot.

Primero, proporciona los detalles de configuración del proyecto, como nombrar tu proyecto, especificar un nombre de grupo en formato de dominio inverso (por ejemplo, com.example) y designar un nombre de paquete para el código Java de tu aplicación. También puedes incluir metadatos como una descripción y una versión si es necesario.

Segundo, agrega las dependencias necesarias. En la sección Dependencias, selecciona "Spring Web" para habilitar el soporte para la creación de aplicaciones web con Spring. Del mismo modo, marca "Spring GraphQL" para habilitar las funciones relacionadas con GraphQL. Una vez que hayas configurado tu proyecto y elegido las dependencias, haz clic en el botón "Generar" para continuar.

Importación de tu proyecto en tu IDE:

Primero, extrae el contenido del archivo ZIP para acceder a su contenido. Segundo, abre tu Entorno de Desarrollo Integrado (IDE), como IntelliJ IDEA. A continuación, importa el proyecto que extrajiste anteriormente.

¡Eso es todo! Tu entorno está configurado, has creado un proyecto Spring Boot y tienes GraphQL a bordo. Tu IDE es tu campo de juego para las aventuras de codificación.

¿Cómo configurar la capa de datos?

En esta sección, crearemos un ejemplo simple, como una cafetería, para demostrar cómo GraphQL puede mejorar la recuperación y la gestión de datos.

Introducción al ejemplo:

Imagina que estás desarrollando una API para una cafetería para administrar su menú y pedidos. Para ilustrar esto, definiremos modelos de datos básicos para artículos de café y clientes, y configuraremos un servicio para manejar estos datos.

Definición de modelos de datos básicos:

Comencemos creando dos modelos de datos simples: Coffee y Size. Estos modelos se implementarán como clases Java, cada una con atributos que representan información relevante.
Deberás crear dos clases en dos archivos diferentes y en cada clase, deberás agregar constructores, getters y setters para los atributos.

public class Coffee {
    private int id;
    private String name;
    private Size size;

    // Constructors, getters, setters
}

public class Size {
    private int id;
    private String name;

    // Constructors, getters, setters
}

Después de crear y agregar estas clases, debes asegurarte de que estén ubicadas en el paquete apropiado dentro de tu proyecto Spring Boot. La estructura del paquete debe reflejar el nombre del paquete que proporcionaste al generar el proyecto en Spring Initializr.

Aquí te mostramos cómo puedes agregar setters, getters y constructores para la clase Coffee.java.

package structure

Configuración de la gestión de datos:

Crearemos una clase simple CoffeeService para que sirva como un repositorio de datos en memoria y administre los datos del café. Para demostrarlo, poblaremos este repositorio con algunos artículos de café de muestra.

import java.util.ArrayList;
import java.util.List;

@Component
public class CoffeeService {

	private final List<Coffee> coffees = new ArrayList<>();

	@PostConstruct
	public void init() {
    	Size smallSize = new Size(1, "Small");
    	Size mediumSize = new Size(2, "Medium");
    	Size largeSize = new Size(3, "Large");

    	coffees.add(new Coffee(1, "Espresso", smallSize));
    	coffees.add(new Coffee(2, "Latte", mediumSize));
    	coffees.add(new Coffee(3, "Cappuccino", largeSize));
	}

	public List<Coffee> getAllCoffees() {
    	return coffees;
	}

	public Coffee getCoffeeById(int id) {
    	return coffees.stream()
        	.filter(coffee -> coffee.getId() == id)
        	.findFirst()
        	.orElse(null);
	}
}

La clase CoffeeService administra los datos relacionados con el café, actuando como un sistema de almacenamiento y recuperación. Inicializa los datos de café de muestra al momento de la creación, ofreciendo métodos para recuperar todos los cafés o uno específico por ID. Esta abstracción agiliza el acceso y la manipulación de datos, preparando los datos para la interacción dentro del esquema GraphQL.

Data Management

¿Cómo crear el esquema GraphQL?

Crea un archivo llamado schema.graphqls en la carpeta src/main/resources y define el esquema GraphQL utilizando el lenguaje de definición de esquemas (SDL).

type Query {
	getAllCoffees: [Coffee!]!
	getCoffeeById(id: Int!): Coffee
}

type Coffee {
	id: Int!
	name: String!
	size: Size!
}

type Size {
	id: Int!
	name: String!
}

Aquí te mostramos cómo puedes hacerlo.

Schemas GraphQL

Crear buscadores de datos:

El código define una clase llamada CoffeeDataFetcher responsable de recuperar datos para consultas GraphQL. Está anotada con @Component para ser administrada por Spring. El buscador getAllCoffees() recupera una lista de artículos de café utilizando el método coffeeService.getAllCoffees(). El buscador getCoffeeById() extrae un ID de los argumentos de la consulta y lo utiliza para buscar un artículo de café específico del CoffeeService.

import graphql.schema.DataFetcher;
import graphql.schema.DataFetchingEnvironment;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;

@Component
public class CoffeeDataFetcher {

	@Autowired
	private CoffeeService coffeeService;

	public DataFetcher<List<Coffee>> getAllCoffees() {
    	return environment -> coffeeService.getAllCoffees();
	}

	public DataFetcher<Coffee> getCoffeeById() {
    	return environment -> {
        	int id = environment.getArgument("id");
        	return coffeeService.getCoffeeById(id);
    	};
	}
}

Aquí te mostramos cómo puedes hacerlo.

Data Fetchers

Crear controlador GraphQL:

En Spring, los controladores GraphQL proporcionan puntos finales para interactuar con tu esquema GraphQL. Estos controladores manejan las consultas entrantes y devuelven los datos correspondientes.

import graphql.GraphQL;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class GraphQLController {

	@Autowired
	private GraphQL graphQL;

	@PostMapping("/graphql")
	public Map<String, Object> executeQuery(@RequestBody String query) {
    	ExecutionResult executionResult = graphQL.execute(query);
    	return executionResult.toSpecification();
	}
}

Este controlador manejará las consultas GraphQL entrantes e interactuará con tu esquema GraphQL. Proporciona un punto final RESTful en /graphql que acepta solicitudes POST con la consulta GraphQL en el cuerpo de la solicitud. Luego, el controlador utiliza la instancia GraphQL para ejecutar la consulta y devuelve el resultado de la ejecución como un mapa.

Spring GraphQL es un marco de trabajo poderoso que permite a los desarrolladores crear API eficientes utilizando el lenguaje de consulta GraphQL. A diferencia de las API REST tradicionales, donde múltiples puntos finales dictan la recuperación de datos, GraphQL permite a los clientes especificar exactamente qué datos necesitan en una sola solicitud, lo que reduce la sobre-obtención o la sub-obtención de datos. Spring GraphQL aprovecha las fortalezas del ecosistema Spring, combinando la simplicidad de Spring Boot con la flexibilidad de GraphQL.

El proceso implica definir tus modelos de datos, crear una capa de servicio para administrar los datos y establecer un esquema con tipos y consultas. El enfoque schema-first de Spring GraphQL garantiza un diseño claro y un proceso de desarrollo estructurado. La obtención de datos se simplifica a través de resolvers y las actualizaciones en tiempo real se facilitan mediante suscripciones.

Herramientas de prueba de GraphQL:

GraphQL se ha convertido en una forma popular de crear API, y probarlas es crucial para garantizar que funcionen correctamente. Las herramientas de prueba ayudan a los desarrolladores a verificar si sus API GraphQL funcionan según lo previsto.

Una de estas herramientas es Apidog, que ofrece una gama de funciones para facilitar las pruebas de API. Veamos qué puede hacer Apidog y mencionemos algunas otras herramientas de prueba útiles para GraphQL.

Apidog GraphQL

Apidog:

Apidog es un conjunto de herramientas versátil que cubre todo el proceso de creación de API. Es como una navaja suiza para las API, que ayuda con el diseño, las pruebas y más. Esto es lo que ofrece Apidog:

Lo que Apidog ofrece para las pruebas de GraphQL:

Apidog también funciona bien para probar API GraphQL. Tiene características como:

Conclusión

A medida que las API siguen evolucionando, la combinación de GraphQL, Spring GraphQL y herramientas como Apidog remodela la forma en que se crean las API. Esta combinación brinda a los desarrolladores más control y eficiencia, lo que resulta en API sólidas, adaptables y de alto rendimiento.

Explore more

Cómo usar Ollama: Guía Completa para Principiantes sobre LLMs Locales con Ollama

Cómo usar Ollama: Guía Completa para Principiantes sobre LLMs Locales con Ollama

El panorama de la inteligencia artificial evoluciona constantemente, y los Grandes Modelos de Lenguaje (LLM) se vuelven cada vez más potentes y accesibles. Aunque muchos interactúan con estos modelos a través de servicios basados en la nube, existe un movimiento creciente enfocado en ejecutarlos directamente en computadoras personales. Aquí es donde entra Ollama. Ollama es una herramienta potente pero fácil de usar, diseñada para simplificar drásticamente el complejo proceso de descargar, config

28 April 2025

¿Dónde Descargar Swagger UI en Español Gratis?

¿Dónde Descargar Swagger UI en Español Gratis?

¿Necesitas Swagger UI en español? Este artículo explica por qué no existe una descarga oficial gratuita y cómo habilitar la traducción. Explora las características de Swagger y por qué Apidog es la alternativa superior para diseño, pruebas y documentación API integrados.

23 April 2025

¿Dónde Descargar Postman en Español Gratis?

¿Dónde Descargar Postman en Español Gratis?

¿Puedes descargar Postman en español gratis? Aunque Postman carece de soporte nativo en español, existen soluciones. Explóralas y descubre Apidog, una potente alternativa unificada a Postman diseñada para optimizar todo tu flujo de trabajo de API, sin importar el idioma.

22 April 2025

Practica el diseño de API en Apidog

Descubre una forma más fácil de construir y usar APIs