Introdução: Por que GraphQL e Java são uma combinação poderosa
O desenvolvimento moderno de APIs exige flexibilidade e eficiência. A API REST, apesar de sua popularidade, frequentemente enfrenta o problema de over-fetching (carregamento excessivo de dados) ou under-fetching (falta de dados). O GraphQL resolve esses problemas, permitindo que o cliente solicite apenas os dados de que precisa.
O Java, por sua vez, continua sendo uma das linguagens mais confiáveis para desenvolvimento enterprise. A combinação de GraphQL e Java através do framework Spring Boot oferece uma ferramenta poderosa para criar APIs escaláveis e de alto desempenho. Neste tutorial passo a passo, criaremos uma API GraphQL simples do zero.
Este material será útil para desenvolvedores Java que desejam dominar uma abordagem moderna para construir APIs. Abordaremos os conceitos-chave, escreveremos código e testaremos nossa implementação.
1. Configuração do projeto e dependências
O primeiro passo é criar um projeto Spring Boot básico. Usaremos o Maven para gerenciar as dependências. Certifique-se de ter o JDK 17+ e o Maven 3.8+ instalados.
Crie o arquivo pom.xml com o seguinte conteúdo:
<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion>
<parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>3.2.0</version> </parent>
<groupId>com.example</groupId> <artifactId>graphql-java-tutorial</artifactId> <version>1.0.0</version>
<properties> <java.version>17</java.version> </properties>
<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></project>Após configurar o pom.xml, crie a classe principal da aplicação:
package com.example.graphqldemo;
import org.springframework.boot.SpringApplication;import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplicationpublic class GraphqlDemoApplication { public static void main(String[] args) { SpringApplication.run(GraphqlDemoApplication.class, args); }}Agora a estrutura do projeto está pronta. Vamos para a definição dos dados.
2. Definição do modelo de dados e GraphQL Schema
O GraphQL Schema é o contrato entre o cliente e o servidor. Começaremos criando um modelo simples de Book (livro).
2.1 Classe do modelo Java
package com.example.graphqldemo.model;
public class Book { private String id; private String title; private String author; private int pages;
public Book(String id, String title, String author, int pages) { this.id = id; this.title = title; this.author = author; this.pages = pages; }
// Getters e Setters public String getId
```