Preparativos para a Criação de um RestController
Mensagem para os aprendizes
Antes de começar o exercício prático de criação de um RestController, é essencial que você dedique um tempo para ler atentamente esta seção. Ainda não é hora de codificar, mas sim de se preparar e entender a teoria por trás do que vamos fazer.
1. O que é um Serviço Web?
Um serviço web é um componente de software que permite que aplicações se comuniquem entre si através de uma rede. Ele expõe funcionalidades ou dados que outras aplicações podem consumir enviando requisições HTTP e recebendo respostas.
Arquitetura Cliente-Servidor
Fluxo de Comunicação
2. Anotações no Spring Boot
As anotações são metadados adicionados ao código para indicar como certas partes devem se comportar. Elas permitem que o Spring Boot configure automaticamente sua aplicação.
Principais Anotações
| Anotação | Papel | Exemplo |
|---|---|---|
@RestController | Indica que a classe é um controlador REST que gerencia requisições HTTP e retorna respostas em formato JSON ou XML | @RestController public class CardController |
@RequestMapping | Associa uma URL base a uma classe ou método | @RequestMapping("/cards") |
@GetMapping | Especifica que um método responde a requisições HTTP GET | @GetMapping("/hello") |
@PostMapping | Especifica que um método responde a requisições HTTP POST | @PostMapping("/create") |
@PutMapping | Especifica que um método responde a requisições HTTP PUT | @PutMapping("/update") |
@DeleteMapping | Especifica que um método responde a requisições HTTP DELETE | @DeleteMapping("/delete") |
Hierarquia das Anotações
3. Modelo (Model) e Controlador (Controller)
O Modelo
Um Modelo é uma classe Java que representa uma entidade de negócio. Ela contém os atributos e métodos para gerenciar os dados.
Exemplo: Modelo Card
Código Java correspondente:
public class Card {
private int cardId;
private int customerId;
private String cardNumber;
private String cardType;
private int totalLimit;
private int amountUsed;
private int availableAmount;
private String createDt;
// Getters e Setters
}
O Controlador
Um Controlador é uma classe que gerencia as requisições HTTP recebidas e retorna respostas. Ele faz a ponte entre o cliente e a lógica de negócio.
Exemplo: Controlador CardController
Código Java correspondente:
@RestController
@RequestMapping("/cards")
public class CardController {
@GetMapping("/hello")
public String helloCard() {
return "Hello, Card!";
}
@GetMapping("/{id}")
public Card getCard(@PathVariable int id) {
// Lógica para recuperar um cartão
}
@PostMapping
public Card createCard(@RequestBody Card card) {
// Lógica para criar um cartão
}
}
Arquitetura MVC com Spring Boot
4. Pré-requisitos Técnicos
Antes de começar o exercício prático, certifique-se de que seu ambiente de desenvolvimento está corretamente configurado.
Verificação das Ferramentas
1. Java Development Kit (JDK)
Versão requerida: Java 17 ou superior
Verificação:
java -version
Resultado esperado:
java version "17.0.x" ou superior
2. Apache Maven
Versão requerida: Maven 3.9 ou superior (recomendado para estabilidade)
Verificação:
mvn -version
Resultado esperado:
Apache Maven 3.9.x ou superior
Java version: 17.x.x
Nota: O Maven 3.9+ oferece melhor estabilidade e compatibilidade com Java 17+.
3. Visual Studio Code
Extensões necessárias:
- Extension Pack for Java
- Spring Boot Extension Pack
Diagrama do Ambiente de Desenvolvimento
5. Plano do Exercício Prático
Objetivo
Aprender a criar um controlador REST para gerenciar requisições HTTP criando uma aplicação Spring Boot completa.
Etapas do Exercício
Detalhes das Etapas
Etapa 1: Configuração do Projeto
Utilize o Spring Initializr para gerar um projeto Spring Boot com:
- Project: Maven
- Language: Java
- Spring Boot Version: 3.x
- Dependencies: Spring Web, Spring Boot DevTools
Etapa 2: Criação do Modelo
Crie uma classe Card no pacote model com os atributos necessários.
Etapa 3: Criação do Controlador
Crie uma classe CardController no pacote controller com:
- Anotação
@RestController - Anotação
@RequestMapping("/cards") - Métodos com
@GetMapping,@PostMapping, etc.
Etapa 4: Compilação e Execução com Maven
Comandos Maven essenciais:
Opção 1: Comandos separados
# Limpar o projeto
mvn clean
# Compilar e instalar (sem testes)
mvn install -DskipTests
# Executar a aplicação
mvn spring-boot:run
Opção 2: Comando combinado (RECOMENDADO)
# Tudo em um único comando
mvn clean install -DskipTests spring-boot:run
Explicação dos comandos:
mvn clean: Remove arquivos compilados anteriormentemvn install: Compila o projeto e gera o arquivo JAR-DskipTests: Ignora a execução dos testes (mais rápido para desenvolvimento)spring-boot:run: Inicia a aplicação Spring Boot
Nota: O comando combinado é mais eficiente pois executa todo o ciclo de uma só vez.
Etapa 6: Teste
Testar os endpoints:
http://localhost:8080/cards/hello- Utilizar o Postman para testar os outros métodos
6. Estrutura do Projeto Spring Boot
7. Ciclo de Vida de uma Requisição HTTP
Conceitos-Chave para Lembrar
1. Separação de Responsabilidades
2. Anotações Spring Boot
- @RestController = @Controller + @ResponseBody (retorna automaticamente JSON)
- @RequestMapping define o caminho base
- @GetMapping/@PostMapping/@PutMapping/@DeleteMapping correspondem aos métodos HTTP
3. Formato de Resposta
Por padrão, o Spring Boot converte automaticamente objetos Java em JSON usando o Jackson.
Conclusão
Esta leitura preparatória forneceu para você:
- Uma compreensão dos serviços web e seu funcionamento
- O conhecimento das principais anotações do Spring Boot
- A distinção entre Modelo e Controlador
- Os pré-requisitos técnicos necessários
- Uma visão geral do plano do exercício prático
Agora você está pronto para passar ao exercício prático onde irá criar seu primeiro RestController!
Importante: Se algo não estiver claro, não hesite em reler esta seção ou fazer perguntas. Uma boa compreensão teórica facilitará muito a prática.