Tutorial de GraphQL: Introdução ao Spring para GraphQL

Este é um tutorial abrangente de GraphQL, onde embarcaremos em uma jornada para desmistificar os conceitos de GraphQL e guiá-lo no processo de início com o Spring para GraphQL.

Miguel Oliveira

Miguel Oliveira

25 maio 2025

Tutorial de GraphQL: Introdução ao Spring para GraphQL

No cenário em constante evolução do desenvolvimento web, GraphQL emergiu como uma alternativa poderosa às APIs REST tradicionais, oferecendo uma abordagem mais flexível e eficiente para a recuperação de dados. Se você está ansioso para explorar essa tecnologia criativa e integrá-la perfeitamente ao Spring, você veio ao lugar certo.

Bem-vindo ao nosso tutorial abrangente sobre GraphQL, onde embarcaremos em uma jornada para desmistificar os conceitos de GraphQL e guiá-lo pelo processo de início com o Spring para GraphQL.

O que é Spring GraphQL e suas principais características

Spring GraphQL é uma extensão do popular Spring Framework que capacita os desenvolvedores a construir APIs baseadas em GraphQL de forma perfeita. Ele combina o poder da facilidade de desenvolvimento do Spring Boot com a flexibilidade e eficiência do GraphQL, tornando-se uma escolha ideal para desenvolver APIs modernas.

As principais características do Spring GraphQL incluem:

Como configurar seu ambiente?

Antes de começar sua jornada com GraphQL e Spring, verifique se a sua configuração está pronta. Veja como você pode preparar seu ambiente para construir um projeto Spring Boot com GraphQL:

Pré-requisitos:

Criando um projeto Spring Boot:

Spring Initializr: Vá para start.spring.io, seu ponto de partida para projetos Spring Boot.

Primeiro, forneça os detalhes da configuração do projeto, como nomear seu projeto, especificar um nome de grupo no formato de domínio reverso (por exemplo, com.exemplo) e designar um nome de pacote para o código Java do seu aplicativo. Você também pode incluir metadados, como uma descrição e versão, se necessário.

Segundo, adicione as dependências necessárias. Na seção Dependências, selecione "Spring Web" para habilitar suporte para criar aplicações web com Spring. Da mesma forma, marque "Spring GraphQL" para habilitar recursos relacionados ao GraphQL. Depois de configurar seu projeto e escolher as dependências, clique no botão "Gerar" para prosseguir.

Importando seu projeto para seu IDE:

Primeiro, extraia o conteúdo do arquivo ZIP para acessar seu conteúdo. Segundo, abra seu Ambiente de Desenvolvimento Integrado (IDE), como IntelliJ IDEA. Em seguida, importe o projeto que você extraiu anteriormente.

É isso! Seu ambiente está configurado, você criou um projeto Spring Boot e tem o GraphQL a bordo. Seu IDE é seu espaço de brincadeiras para aventuras de codificação.

Como configurar a camada de dados?

Nesta seção, criaremos um exemplo simples, como uma cafeteria, para demonstrar como o GraphQL pode aprimorar a recuperação e a gestão de dados.

Introdução ao exemplo:

Imagine que você está desenvolvendo uma API para uma cafeteria para gerenciar seu cardápio e pedidos. Para ilustrar isso, definiremos modelos de dados básicos para itens de café e clientes, e configuraremos um serviço para lidar com esses dados.

Definindo modelos de dados básicos:

Vamos começar criando dois modelos de dados simples: Coffee e Size. Esses modelos serão implementados como classes Java, cada uma com atributos representando informações relevantes.
Você precisará criar duas classes em dois arquivos diferentes e, em cada classe, você deve adicionar construtores, getters e setters para os atributos.

public class Coffee {
    private int id;
    private String name;
    private Size size;

    // Construtores, getters, setters
}

public class Size {
    private int id;
    private String name;

    // Construtores, getters, setters
}

Após criar e adicionar essas classes, você precisa garantir que elas estejam localizadas no pacote apropriado dentro do seu projeto Spring Boot. A estrutura do pacote deve refletir o nome do pacote que você forneceu ao gerar o projeto no Spring Initializr.

Aqui está como você pode adicionar setters, getters e construtores para a classe Coffee.java.

estrutura de pacote

Configurando a gestão de dados:

Criaremos uma simples classe CoffeeService para servir como um repositório de dados em memória e gerenciar dados de café. Para demonstrar, popularemos esse repositório com alguns itens de café de exemplo.

import java.util.ArrayList;
import java.util.List;

@Component
public class CoffeeService {

	private final List<Coffee> coffees = new ArrayList<>();

	@PostConstruct
	public void init() {
    	Size smallSize = new Size(1, "Pequeno");
    	Size mediumSize = new Size(2, "Médio");
    	Size largeSize = new Size(3, "Grande");

    	coffees.add(new Coffee(1, "Espresso", smallSize));
    	coffees.add(new Coffee(2, "Latte", mediumSize));
    	coffees.add(new Coffee(3, "Cappuccino", largeSize));
	}

	public List<Coffee> getAllCoffees() {
    	return coffees;
	}

	public Coffee getCoffeeById(int id) {
    	return coffees.stream()
        	.filter(coffee -> coffee.getId() == id)
        	.findFirst()
        	.orElse(null);
	}
}

A classe CoffeeService gerencia dados relacionados a café, atuando como um sistema de armazenamento e recuperação. Ela inicializa dados de café de exemplo ao ser criada, oferecendo métodos para recuperar todos os cafés ou um específico pelo ID. Essa abstração simplifica o acesso e a manipulação de dados, preparando os dados para interação dentro do esquema GraphQL.

Gestão de Dados

Como criar o esquema GraphQL?

Crie um arquivo chamado schema.graphqls na pasta src/main/resources e defina o esquema GraphQL usando a Linguagem de Definição de Esquema (SDL).

type Query {
	getAllCoffees: [Coffee!]!
	getCoffeeById(id: Int!): Coffee
}

type Coffee {
	id: Int!
	name: String!
	size: Size!
}

type Size {
	id: Int!
	name: String!
}

Aqui está como você pode fazê-lo.

Schemas GraphQL

Criar Fetchers de Dados:

O código define uma classe chamada CoffeeDataFetcher responsável por recuperar dados para consultas GraphQL. Ela está anotada com @Component para ser gerenciada pelo Spring. O fetcher getAllCoffees() recupera uma lista de itens de café usando o método coffeeService.getAllCoffees(). O fetcher getCoffeeById() extrai um ID dos argumentos de consulta e o utiliza para buscar um item de café específico no CoffeeService.

import graphql.schema.DataFetcher;
import graphql.schema.DataFetchingEnvironment;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;

@Component
public class CoffeeDataFetcher {

	@Autowired
	private CoffeeService coffeeService;

	public DataFetcher<List<Coffee>> getAllCoffees() {
    	return environment -> coffeeService.getAllCoffees();
	}

	public DataFetcher<Coffee> getCoffeeById() {
    	return environment -> {
        	int id = environment.getArgument("id");
        	return coffeeService.getCoffeeById(id);
    	};
	}
}

Aqui está como você pode fazê-lo.

Fetchers de Dados

Criar Controlador GraphQL:

No Spring, os controladores GraphQL fornecem endpoints para interagir com seu esquema GraphQL. Esses controladores lidam com consultas de entrada e retornam os dados correspondentes.

import graphql.GraphQL;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class GraphQLController {

	@Autowired
	private GraphQL graphQL;

	@PostMapping("/graphql")
	public Map<String, Object> executeQuery(@RequestBody String query) {
    	ExecutionResult executionResult = graphQL.execute(query);
    	return executionResult.toSpecification();
	}
}

Este controlador lidará com consultas GraphQL de entrada e interagirá com seu esquema GraphQL. Ele fornece um endpoint RESTful em /graphql que aceita requisições POST com a consulta GraphQL no corpo da requisição. O controlador então usa a instância GraphQL para executar a consulta e retorna o resultado da execução como um mapa.

Spring GraphQL é um framework poderoso que capacita os desenvolvedores a construir APIs eficientes usando a linguagem de consulta GraphQL. Ao contrário das APIs REST tradicionais, onde vários endpoints ditam a recuperação de dados, o GraphQL empodera os clientes a especificar exatamente quais dados precisam em uma única requisição, reduzindo a recuperação excessiva ou insuficiente de dados. O Spring GraphQL aproveita as forças do ecossistema Spring, combinando a simplicidade do Spring Boot com a flexibilidade do GraphQL.

O processo envolve definir seus modelos de dados, criar uma camada de serviço para gerenciar os dados e estabelecer um esquema com tipos e consultas. A abordagem orientada a esquema do Spring GraphQL garante um design claro e um processo de desenvolvimento estruturado. A recuperação de dados é simplificada por meio de resolvers, e atualizações em tempo real são facilitadas por assinaturas.

Ferramentas de Teste GraphQL:

O GraphQL se tornou uma maneira popular de construir APIs, e testá-las é crucial para garantir que funcionem corretamente. As ferramentas de teste ajudam os desenvolvedores a verificar se suas APIs GraphQL estão funcionando conforme o esperado.

Uma dessas ferramentas é Apidog, que oferece uma gama de recursos para facilitar os testes de API. Vamos ver o que o Apidog pode fazer e mencionar algumas outras ferramentas de teste úteis para GraphQL.

Apidog GraphQL

Apidog:

Apidog é um kit de ferramentas versátil que cobre todo o processo de criação de APIs. É como um canivete suíço para APIs, ajudando com design, teste e muito mais. Aqui está o que o Apidog oferece:

O que o Apidog oferece para teste GraphQL:

O Apidog também funciona bem para testar APIs GraphQL. Ele possui recursos como:

Conclusão

À medida que as APIs continuam evoluindo, a combinação de GraphQL, Spring GraphQL e ferramentas como Apidog reestrutura como as APIs são feitas. Essa combinação proporciona aos desenvolvedores mais controle e eficiência, resultando em APIs robustas, adaptáveis e de alto desempenho.

Explore more

Como Usar o Ollama: Guia Completo para Iniciantes sobre LLMs Locais com Ollama

Como Usar o Ollama: Guia Completo para Iniciantes sobre LLMs Locais com Ollama

O cenário da inteligência artificial está em constante evolução, com os Grandes Modelos de Linguagem (LLMs) se tornando cada vez mais poderosos e acessíveis. Embora muitos interajam com esses modelos através de serviços baseados na nuvem, há um movimento crescente focado em executá-los diretamente em computadores pessoais. É aqui que entra o Ollama. O Ollama é uma ferramenta potente, porém fácil de usar, projetada para simplificar drasticamente o complexo processo de baixar, configurar e executa

28 abril 2025

Onde Baixar Swagger UI em Português Grátis

Onde Baixar Swagger UI em Português Grátis

Explore a dificuldade de obter uma interface em português para o Swagger UI e saiba por que o Apidog é uma alternativa de plataforma poderosa para o desenvolvimento de APIs.

23 abril 2025

Onde Baixar o Postman em Português Grátis

Onde Baixar o Postman em Português Grátis

No mundo do desenvolvimento de software, especialmente ao trabalhar com APIs, ferramentas eficientes são essenciais. Postman se tornou um nome conhecido, uma plataforma popular usada por milhões de desenvolvedores para criar, testar e gerenciar APIs. No entanto, para muitos usuários de língua portuguesa, uma pergunta comum surge: é possível ter o Postman em português? A resposta curta é que Postman não oferece atualmente suporte nativo em português para sua interface de usuário. Mas não se preo

21 abril 2025

Pratique o design de API no Apidog

Descubra uma forma mais fácil de construir e usar APIs