Aula 05 - Criando APIs REST com Spring Web 📡
Chegou a hora de criar seus primeiros endpoints de verdade! Nesta aula, vamos usar o Spring Web para expor uma API REST completa.
😊 Anatomia de um Controller REST
Um @RestController mapeia URLs para métodos Java, usando anotações que representam os verbos HTTP.
@RestController
@RequestMapping("/produtos")
public class ProdutoController {
@GetMapping
public List<Produto> listar() {
return List.of(new Produto("Mouse", 50.0));
}
@PostMapping
public Produto criar(@RequestBody Produto produto) {
return produto; // Em breve, salvaremos no banco (Aula 07)
}
}
📊 Verbos HTTP e Anotações Correspondentes
| Verbo | Anotação Spring | Ação |
|---|---|---|
| GET | @GetMapping | Buscar dados |
| POST | @PostMapping | Criar um recurso |
| PUT | @PutMapping | Atualizar um recurso inteiro |
| DELETE | @DeleteMapping | Remover um recurso |
🧠 Capturando Dados da Requisição
Important
@PathVariable captura dados da URL. @RequestBody captura o corpo JSON da requisição. @RequestParam captura parâmetros de query string.
@GetMapping("/{id}")
public Produto buscarPorId(@PathVariable Long id) {
return new Produto("Produto " + id, 100.0);
}
📊 Ciclo de uma Requisição REST
graph LR
Cliente -- "GET /produtos/5" --> Controller
Controller -- "@PathVariable id=5" --> Logic[Lógica do Método]
Logic -- "Retorna Objeto" --> Spring[Spring converte para JSON]
Spring -- "JSON" --> Cliente 💻 Testando com cURL
📝 Exercícios Progressivos
- Básico: Qual anotação usamos para criar um endpoint que responde a requisições GET?
- Básico: Para que serve o
@RequestBody? - Intermediário: Qual a diferença entre
@PathVariablee@RequestParam? - Intermediário: Como você criaria um endpoint
DELETE /produtos/{id}? - Desafio: Crie um Controller
ClienteControllercom endpoints GET (listar todos), GET por id, POST e DELETE.
🚀 Mini-projeto: Crie o ProdutoController com os 4 endpoints básicos (GET, GET por id, POST, DELETE), retornando dados fixos por enquanto. Teste todos com o Postman ou cURL.