GraphQL API con Java: tutorial paso a paso para principiantes

Entrenador de Python en Línea para Principiantes

Aprende Python fácilmente sin sobrecargarte de teoría. Resuelve tareas prácticas con verificación automática, recibe pistas y escribe código directamente en el navegador, sin instalar nada.

Start Course

Introducción a GraphQL y Java

GraphQL es un lenguaje de consulta moderno para API, desarrollado por Facebook. A diferencia de REST, donde cada endpoint devuelve una estructura de datos fija, GraphQL permite al cliente solicitar exactamente los campos que necesita. Esto reduce el volumen de datos transferidos y simplifica el desarrollo de interfaces complejas.

En este tutorial crearemos una API GraphQL simple con Java utilizando Spring Boot y la biblioteca graphql-java. Aprenderás cómo configurar el proyecto, definir el esquema, implementar resolvers y probar la API. El artículo está orientado a principiantes, por lo que avanzaremos paso a paso.

Para trabajar necesitarás: JDK 11+, Maven o Gradle, IDE (IntelliJ IDEA, Eclipse) y conocimientos básicos de Java.



1. Configuración del proyecto Spring Boot

Empecemos creando un nuevo proyecto Spring Boot. La forma más sencilla es usar Spring Initializr. Selecciona las siguientes dependencias:

  • Spring Web
  • Spring Boot DevTools
  • Lombok (opcional, para simplificar el código)

Después de generar el proyecto, agrega en pom.xml (o build.gradle) la dependencia para GraphQL:

<dependency>    <groupId>com.graphql-java</groupId>    <artifactId>graphql-spring-boot-starter</artifactId>    <version>5.0.2</version></dependency><dependency>    <groupId>com.graphql-java</groupId>    <artifactId>graphql-java-tools</artifactId>    <version>5.2.4</version></dependency>

Estas bibliotecas simplificarán la integración de GraphQL con Spring Boot. Después de actualizar las dependencias, ejecuta el proyecto con el comando mvn spring-boot:run o a través del IDE.



2. Definición del esquema GraphQL

El esquema es la base de una API GraphQL. Describe los tipos de datos, consultas (queries) y mutaciones (mutations). Crea un archivo schema.graphqls en la carpeta src/main/resources:

type Book {    id: ID!    title: String!    author: String!    year: Int}

type Query { books: [Book] bookById(id: ID!): Book}

type Mutation { addBook(title: String!, author: String!, year: Int): Book}

Aquí hemos definido el tipo Book con los campos obligatorios id, title, author y el campo opcional year. Query contiene dos consultas: obtener todos los libros y un libro por ID. Mutation permite agregar nuevos libros.

Observa el signo de exclamación: indica un campo obligatorio (non-null).



3. Implementación de resolvers

Los resolvers son clases Java que conectan el esquema con los datos. Crearemos una clase Book como modelo de datos:

import lombok.AllArgsConstructor;import lombok.Data;import lombok.NoArgsConstructor;

@Data@NoArgsConstructor@AllArgsConstructorpublic class Book { private String id; private String title; private String author; private Integer year;}

Ahora crearemos un servicio para almacenar libros (en un proyecto real aquí se conectaría a la base de datos):

import org.springframework.stereotype.Service;import javax.annotation.PostConstruct;import java.util.ArrayList;import java.util.List;import java.util.Optional;import java.util.UUID;

@Servicepublic class BookService { private List<Book> books = new ArrayList<>();

@PostConstruct public void init() { books.add(new Book("1", "Guerra y paz", "León Tolstói", 1869)); books.add(new Book("2", "Crimen y castigo", "Fiódor Dostoyevski", 1866)); }

public List<Book> getAllBooks() { return books; }

public Optional<Book> getBookById(String id) { return books.str

Blogs

Book Recommendations