
Diferença entre Controller e RestController no Spring Boot para APIs REST
Neste artigo você vai entender a diferença entre Controller e RestController no Spring Boot,
quando usar cada um e por que o @RestController é a melhor escolha para criar
api rest spring boot java.
Essa é uma dúvida muito comum para quem está começando com Spring Boot e APIs REST.
O que é o @Controller no Spring Boot?
A anotação @Controller é utilizada para indicar que uma classe é um controlador MVC tradicional.
Ela é muito usada em aplicações que retornam páginas HTML, como sistemas com Thymeleaf ou JSP.
Por padrão, métodos anotados com @Controller retornam o nome de uma view.
@Controller
public class HomeController {
@GetMapping("/")
public String home() {
return "index";
}
}
Nesse exemplo, o Spring vai procurar um arquivo de template chamado index.
O que é o @RestController no Spring Boot?
O @RestController foi criado especificamente para facilitar a criação de APIs REST no Spring Boot.
Ele combina duas anotações:
@Controller@ResponseBody
Isso significa que os métodos retornam diretamente dados no formato JSON,
sem a necessidade de uma view.
@RestController
@RequestMapping("/api/usuarios")
public class UsuarioController {
@GetMapping
public List<String> listarUsuarios() {
return List.of("Ana", "Carlos", "João");
}
}
Diferença entre Controller e RestController
| Característica | @Controller | @RestController |
|---|---|---|
| Retorno padrão | View (HTML) | JSON / XML |
| Uso principal | Aplicações MVC | APIs REST |
| @ResponseBody necessário? | Sim | Não |
Quando usar Controller?
Utilize @Controller quando:
- Você está criando uma aplicação web tradicional
- Precisa retornar páginas HTML
- Usa motores de template como Thymeleaf
Quando usar RestController?
Utilize @RestController quando:
- Você está criando uma api rest spring boot java
- Precisa retornar JSON
- O backend será consumido por frontend ou mobile
Na maioria dos projetos modernos, especialmente APIs REST, o @RestController é a escolha correta.
Controller vs RestController em APIs REST
Em APIs REST, o uso de @RestController evita configurações desnecessárias
e torna o código mais simples e legível.
Além disso, ele se integra facilmente com recursos como:
- JWT Spring Boot Java
- Spring Security
- Tratamento de erros e controle de respostas HTTP
Para controlar corretamente os códigos de resposta retornados pela API,
é fundamental entender o uso dos
status HTTP em APIs REST com Spring Boot
.
Perguntas frequentes sobre Controller e RestController
Posso usar @Controller em API REST?
Pode, mas não é recomendado. O @RestController simplifica o retorno de JSON.
@RestController funciona com ResponseEntity?
Sim. Ele funciona perfeitamente com
ResponseEntity no Spring Boot.
Qual é mais usado em projetos modernos?
O @RestController é o mais utilizado em APIs REST modernas.
Conteúdos relacionados
Conclusão
Entender a diferença entre Controller e RestController no Spring Boot
é fundamental para criar APIs REST corretas e bem estruturadas.
Em projetos modernos, o uso de @RestController é a abordagem recomendada
para criar APIs REST em Java com Spring Boot.