🚀 Capítulo 12: A Estrela da Morte (Tema: Star Wars)
NOTE
Este capítulo utiliza a temática de Star Wars para explicar a criação de rotas REST no Spring Boot. Aprenda a abrir as portas de comunicação da sua API!
1. 🎯 Objetivo da Aula
Compreender como criar os pontos de entrada (Rotas) de uma API REST usando Spring Boot, conhecendo as anotações @RestController, @GetMapping e @PostMapping.
2. 🏢 O Cenário Prático (Seu Desafio)
Na famosa saga Star Wars, a gigantesca estação espacial Estrela da Morte possui diversos canais de comunicação e portas de hangar. Para que uma nave aliada possa pousar ou para enviar uma mensagem para o Imperador, ela precisa sintonizar na frequência de rádio correta e usar o protocolo de comunicação adequado. Se tentar entrar pela porta errada, o sistema de defesa bloqueia!
No desenvolvimento de APIs com Spring Boot, nós criamos essas portas de entrada usando as classes de Controller!
- São elas que ficam escutando a internet esperando um usuário chamar uma URL específica (Ex:
seu-site.com/usuarios). - E dependendo do “Verbo HTTP” que o usuário usar (como GET ou POST), a nossa API vai executar uma ação diferente. Seu desafio é abrir as portas da Estrela da Morte!
🧠 Fundamentos: A Teoria Traduzida
Para transformar uma classe Java comum em uma porta de entrada da internet, nós usamos feitiços (anotações) do Spring:
🎮 1. @RestController:
Diz ao Spring que essa classe é um controlador de rotas web e que as respostas devem ser enviadas direto no formato JSON para o usuário.
📥 2. @GetMapping (Buscar Dados):
Diz que aquele método só vai responder quando alguém acessar a URL usando o método HTTP GET (usado para buscar informações).
📤 3. @PostMapping (Enviar Dados):
Diz que aquele método só vai responder quando alguém enviar dados novos usando o método HTTP POST.
4. 📖 Exemplo Guiado: O Hangar de Naves
Vamos criar uma rota que diz quais naves estão autorizadas a pousar na Estrela da Morte:
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.Arrays;
import java.util.List;
@RestController
public class HangarController {
// Quando o usuário acessar: localhost:8080/naves
@GetMapping("/naves")
public List<String> listarNavesAutorizadas() {
// O Spring transforma essa lista em JSON automaticamente!
return Arrays.asList("TIE Fighter", "Lambda Shuttle", "Slave I");
}
}5. 🛠️ Prática Obrigatória 1: Criando a Rota de Busca
- Escreva a anotação do Spring que você deve colocar em cima de um método para que ele responda a requisições do tipo GET na URL
"/status".
6. 🛠️ Prática Obrigatória 2: O Formato da Resposta
- No exemplo guiado acima, o método retorna uma lista de textos do Java (
List<String>). O que o Spring Boot faz automaticamente com essa lista antes de enviar a resposta final para o navegador do usuário? Em qual formato o usuário recebe os dados?
7. 📤 Instruções de Entrega (GitHub Desktop + Microsoft Teams)
- Faça o Commit: No GitHub Desktop, digite a mensagem (ex:
Finaliza Capítulo 12 Java_StarWars) e clique em Commit to main. - Envie para a Nuvem (Push): Clique em Push origin.
8. 📂 Estrutura de Pastas
spec_backend_com_java_e_springboot/
├── capitulos/
│ └── capitulo_12_star_wars.md💡 Checkpoint de Lógica
Para que o Spring Boot encontre as suas classes com as anotações @RestController, elas precisam obrigatoriamente estar na mesma pasta (ou em subpastas) da classe principal que tem a anotação @SpringBootApplication!
10. 🔥 Desafio de Fixação
Pesquise o que significa a anotação @RequestMapping e como ela ajuda a economizar código quando temos muitas rotas que começam com o mesmo caminho (ex: /clientes/lista, /clientes/busca).
🔑 Gabarito de Código/Fórmulas
Gabarito da Prática 1:
@GetMapping("/status")Gabarito da Prática 2:- O Spring Boot converte a lista do Java automaticamente para o formato JSON (JavaScript Object Notation), que é o padrão universal de dados na internet. O usuário receberá algo como:
["TIE Fighter", "Lambda Shuttle", "Slave I"].