API GraphQL 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 API con Java

GraphQL es un lenguaje de consultas para API que permite a los clientes solicitar solo los datos que realmente necesitan. A diferencia de REST, donde cada endpoint devuelve una estructura de datos fija, GraphQL ofrece flexibilidad y reduce la cantidad de solicitudes. En este tutorial crearemos una API GraphQL completa en Java utilizando Spring Boot y la biblioteca graphql-java. Aprenderás cómo configurar el proyecto, definir el esquema, escribir resolvers y manejar consultas y mutaciones. Todos los ejemplos de código están listos para ejecutarse.



1. Configuración del proyecto y dependencias

Para empezar, crearemos un nuevo proyecto Spring Boot. Usaremos Maven, pero puedes adaptar el ejemplo a Gradle. Agrega las siguientes dependencias en pom.xml:



<dependency>    <groupId>org.springframework.boot</groupId>    <artifactId>spring-boot-starter-web</artifactId></dependency><dependency>    <groupId>com.graphql-java</groupId>    <artifactId>graphql-java</artifactId>    <version>21.0</version></dependency><dependency>    <groupId>com.graphql-java</groupId>    <artifactId>graphql-java-spring-boot-starter-webmvc</artifactId>    <version>2021-06-28T00-00-00-6e3b7b2</version></dependency>


Después de agregar las dependencias, crea la clase principal de la aplicación:



@SpringBootApplicationpublic class GraphqlApplication {    public static void main(String[] args) {        SpringApplication.run(GraphqlApplication.class, args);    }}


Ahora configuraremos el punto de entrada de GraphQL. Crea el archivo application.yml en la carpeta resources:



graphql:  servlet:    mapping: /graphql    enabled: true    cors-enabled: true


¡Listo! La estructura básica del proyecto se está ejecutando. A continuación, pasamos a definir el esquema.



2. Definición del esquema GraphQL

El esquema es el núcleo de una API GraphQL. Describe los tipos de datos, las consultas y las mutaciones. Crearemos el 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 deleteBook(id: ID!): Boolean}


Aquí hemos definido:

  • Book — un objeto con los campos id, title, author y year.
  • Query — puntos de entrada para lectura de datos (lista de libros y búsqueda por ID).
  • Mutation — operaciones de modificación de datos (agregar y eliminar libro).

Ahora necesitamos cargar este esquema en la aplicación. Crearemos una clase de configuración:



import org.springframework.context.annotation.Bean;import org.springframework.context.annotation.Configuration;import graphql.GraphQL;import graphql.schema.GraphQLSchema;import graphql.schema.idl.RuntimeWiring;import graphql.schema.idl.SchemaGenerator;import graphql.schema.idl.SchemaParser;import graphql.schema.idl.TypeDefinitionRegistry;

import java.io.File;import java.io.IOException;

@Configurationpublic class GraphqlConfig {

@Bean public GraphQL graphQL() throws IOException { File schemaFile = new File("src/main/resources/schema.graphqls"); TypeDefinitionRegistry typeRegistry = new SchemaParser().parse(schemaFile); RuntimeWiring wiring = buildWiring(); GraphQLSchema schema = new SchemaGenerator().makeExecutableSchema(typeRegistry, wiring); return GraphQL.newGraphQL(schema).build(); }

private RuntimeWiring buildWiring() { return RuntimeWiring.newRuntimeWiring() .type(

Blogs

Book Recommendations