GraphQL API com Java: tutorial prático passo a passo

Treinador Online de Python para Iniciantes

Aprenda Python facilmente sem sobrecarga teórica. Resolva tarefas práticas com verificação automática e escreva código diretamente no navegador.

Start Course

Introdução ao GraphQL API em Java

GraphQL é uma linguagem de consulta moderna para APIs que permite que os clientes solicitem apenas os dados de que realmente precisam. Ao contrário do REST, onde a estrutura da resposta é fixa, o GraphQL oferece flexibilidade e eficiência. Neste tutorial passo a passo, criaremos uma API GraphQL completa em Java usando a biblioteca popular graphql-java e Spring Boot. Você aprenderá a configurar o servidor, definir o schema, escrever resolvers e executar consultas. Todos os exemplos de código estão prontos para execução.



O que você aprenderá

  • Como configurar um projeto Spring Boot para GraphQL
  • Como definir o schema GraphQL (tipos, queries, mutations)
  • Como escrever resolvers em Java
  • Como executar consultas query e mutation


1. Configuração do projeto e dependências

Para começar, criaremos um projeto Spring Boot com Maven. Adicionaremos as dependências necessárias no pom.xml:

<dependencies>    <dependency>        <groupId>org.springframework.boot</groupId>        <artifactId>spring-boot-starter-web</artifactId>    </dependency>    <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></dependencies>

Essas bibliotecas fornecem integração do GraphQL com Spring Boot e facilitam o trabalho com schemas. Após adicionar as dependências, atualize o projeto.



Estrutura do projeto

Nosso projeto conterá os seguintes componentes principais:

  • Schema GraphQL (arquivo schema.graphqls)
  • Modelos de dados (Java POJO)
  • Resolvers (manipuladores de consultas)
  • Controller para testes


2. Definição do schema GraphQL

Crie o arquivo src/main/resources/schema.graphqls. Nele, descreveremos os tipos de dados e as operações disponíveis. Como exemplo, usaremos o modelo "Livro":

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

type Query { getBook(id: ID!): Book getAllBooks: [Book]}

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

Aqui, Book é um tipo de objeto com campos obrigatórios (!). Query define os pontos de entrada para leitura de dados, enquanto Mutation define os pontos para modificação. Observe que, em GraphQL, mutations são usadas para criar, atualizar e excluir dados.



3. Criação de modelos Java e resolvers

Modelo Book

Criaremos uma classe POJO simples Book.java:

public class Book {    private String id;    private String title;    private String author;    private int year;

public Book(String id, String title, String author, int year) { this.id = id; this.title = title; this.author = author; this.year = year; }

// getters e setters public String getId() { return id; } public String getTitle() { return title; } public String getAuthor() { return author; } public int getYear() { return year; }}


Resolver para Query

Os resolvers conectam o schema aos dados. Criaremos a classe QueryResolver.java:

import com.coxautodev.graphql.tools.GraphQLQueryResolver;import org.springframework.stereotype.Component;import java.util.*;

@Componentpublic class QueryResolver implements GraphQLQueryResolver {

private final List<Book

Blogs

Book Recommendations