Controller vs RestController no Spring Boot: Qual usar em APIs REST?

controller vs restcontroller no spring boot

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ãoView (HTML)JSON / XML
Uso principalAplicações MVCAPIs REST
@ResponseBody necessário?SimNã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:

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.

Referências oficiais

Deixe um comentário