🚀 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

  1. 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

  1. 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)

  1. Faça o Commit: No GitHub Desktop, digite a mensagem (ex: Finaliza Capítulo 12 Java_StarWars) e clique em Commit to main.
  2. 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:

  1. @GetMapping("/status") Gabarito da Prática 2:
  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"].

Capitulo Anterior | Proximo Capitulo