GraphQL API con Java: tutorial práctico paso a paso

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 API en Java

\n\n

GraphQL es un lenguaje de consultas para API que permite a los clientes solicitar únicamente los datos que realmente necesitan. A diferencia de REST, donde la estructura de la respuesta es fija, GraphQL permite formar respuestas de manera flexible, lo que reduce significativamente el volumen de datos transferidos y acelera el desarrollo.

\n\n

En este tutorial, analizaremos en la práctica cómo crear una GraphQL API con Java utilizando la librería graphql-java y el framework Spring Boot. Aprenderá a configurar el esquema, escribir resolvers y ejecutar consultas.

\n\n

El artículo será útil para desarrolladores Java que deseen dominar un enfoque moderno para construir API y mejorar la interacción entre cliente y servidor.

\n\n

1. Configuración del proyecto y dependencias

\n\n

Para empezar, crearemos un nuevo proyecto Spring Boot. La forma más cómoda es usar Spring Initializr. Agregaremos las siguientes dependencias:

\n\n
    \n
  • Spring Web — para ejecutar el servidor web
  • \n
  • Spring Boot DevTools — para acelerar el desarrollo
  • \n
  • Lombok — para reducir el código repetitivo
  • \n
\n\n

Después de crear el proyecto, agregue la librería principal de GraphQL en pom.xml:

\n\n
<dependency>\n    <groupId>com.graphql-java</groupId>\n    <artifactId>graphql-java-spring-boot-starter-webmvc</artifactId>\n    <version>2021-06-30T00-00-00-1e4b5e5</version>\n</dependency>
\n\n

También necesitará la librería para trabajar con la herramienta GraphiQL (interfaz web para probar consultas):

\n\n
<dependency>\n    <groupId>com.graphql-java</groupId>\n    <artifactId>graphiql-spring-boot-starter</artifactId>\n    <version>5.0.2</version>\n</dependency>
\n\n

Después de agregar las dependencias, actualice el proyecto y ejecútelo. Por defecto, GraphiQL estará disponible en la dirección http://localhost:8080/graphiql.

\n\n

2. Creación del modelo de datos y esquema GraphQL

\n\n

Para la demostración, crearemos un modelo simple Book (libro). Definamos una clase con los campos id, title, author y pages.

\n\n
import lombok.AllArgsConstructor;\nimport lombok.Data;\nimport lombok.NoArgsConstructor;\n\n@Data\n@NoArgsConstructor\n@AllArgsConstructor\npublic class Book {\n    private String id;\n    private String title;\n    private String author;\n    private int pages;\n}
\n\n

Ahora es necesario definir el esquema GraphQL. Cree un archivo schema.graphqls en la carpeta src/main/resources:

\n\n
type Query {\n    allBooks: [Book]\n    bookById(id: String): Book\n}\n\ntype Book {\n    id: String\n    title: String\n    author: String\n    pages: Int\n}
\n\n

El esquema describe dos consultas: obtener todos los libros y obtener un libro por identificador. El tipo Book contiene cuatro campos.

\n\n

Para procesar las consultas, crearemos un servicio que almacene los datos en memoria (para simplificar):

\n\n
import org.springframework.stereotype.Service;\nimport javax.annotation.PostConstruct;\nimport java.util.ArrayList;\nimport java.util.List;\nimport java.util.Optional;\n\n@Service\npublic class BookService {\n    private List<Book> books = new ArrayList<>();\n\n    @PostConstruct\n    public void init() {\n        books.add(new Book("1", "Guerra y Paz", "León Tolstói", 1225));\n        books.add(new Book("2", "Crimen y Castigo", "Fiódor Dostoyevski", 671));\n        books.add(new Book("3", "El Maestro y Margarita", "Mijaíl Bulgákov", 480));\n    }\n\n    public List<Book> getAllBooks() {\n        return books;\n    }\n\n    public Book getBookById(String id) {\n        Optional<Boo                

Blogs

Book Recommendations