🌐 Anotações do Spring Boot para Web REST Controllers
✨ Introdução
O desenvolvimento de APIs RESTful com Spring Boot é uma das abordagens mais eficientes e elegantes no ecossistema Java. Grande parte dessa praticidade vem do uso de anotações, que permitem configurar rotas, manipular dados da requisição e estruturar o comportamento dos controladores de forma clara e concisa.
Neste artigo, vamos explorar as principais anotações utilizadas em Web REST Controllers, explicando cada uma com exemplos práticos para facilitar sua aplicação no dia a dia.
🧩 Anotações Essenciais para Controllers REST
📌 @RestController
- Função: Define a classe como um controlador REST. Combina
@Controller
e@ResponseBody
, retornando os dados diretamente no corpo da resposta (geralmente em JSON). - Exemplo:
java
@RestController
public class ProdutoController {
// métodos retornam JSON
}
📌 @RequestMapping
- Função: Mapeia rotas HTTP para métodos ou classes. Pode definir o caminho e o tipo de requisição.
- Exemplo:
java
@RequestMapping(value = "/produtos", method = RequestMethod.GET)
public List<Produto> listar() {
return produtoService.listarTodos();
}
📌 @GetMapping
, @PostMapping
, @PutMapping
, @DeleteMapping
, @PatchMapping
- Função: Atalhos para
@RequestMapping
com métodos HTTP específicos. - Exemplo:
java
@GetMapping("/produtos/{id}")
public Produto buscarPorId(@PathVariable Long id) {
return produtoService.buscar(id);
}
📌 @PathVariable
- Função: Extrai variáveis diretamente da URL.
- Exemplo:
java
@GetMapping("/clientes/{id}")
public Cliente buscar(@PathVariable Long id) {
return clienteService.buscarPorId(id);
}
📌 @RequestParam
- Função: Captura parâmetros da query string.
- Exemplo:
java
@GetMapping("/produtos")
public List<Produto> filtrar(@RequestParam String categoria) {
return produtoService.filtrarPorCategoria(categoria);
}
📌 @RequestBody
- Função: Mapeia o corpo da requisição (geralmente JSON) para um objeto Java.
- Exemplo:
java
@PostMapping("/clientes")
public Cliente criar(@RequestBody Cliente cliente) {
return clienteService.salvar(cliente);
}
📌 @ResponseStatus
- Função: Define o status HTTP da resposta.
- Exemplo:
java
@PostMapping("/clientes")
@ResponseStatus(HttpStatus.CREATED)
public Cliente criar(@RequestBody Cliente cliente) {
return clienteService.salvar(cliente);
}
📌 @CrossOrigin
- Função: Permite requisições de outros domínios (CORS), útil para integração com front-end.
- Exemplo:
java
@CrossOrigin(origins = "http://localhost:3000")
@GetMapping("/produtos")
public List<Produto> listar() {
return produtoService.listarTodos();
}
📌 @ControllerAdvice
e @ExceptionHandler
- Função: Tratamento global de exceções, permitindo capturar e responder erros de forma centralizada.
- Exemplo:
java
@ControllerAdvice
public class ErroHandler {
@ExceptionHandler(EntidadeNaoEncontradaException.class)
public ResponseEntity<String> tratarErro(EntidadeNaoEncontradaException ex) {
return ResponseEntity.status(HttpStatus.NOT_FOUND).body(ex.getMessage());
}
}
🧠 Conclusão
As anotações para Web REST Controllers no Spring Boot são ferramentas poderosas que tornam o desenvolvimento de APIs mais fluido, organizado e expressivo. Dominar essas anotações é essencial para criar aplicações robustas, escaláveis e fáceis de manter.
Se você está construindo uma API ou apenas aprimorando seu conhecimento, entender essas anotações é um passo fundamental para escrever código limpo e eficiente. E lembre-se: quanto mais você pratica, mais natural o uso dessas ferramentas se torna.