Junior
Qual é a diferença entre RestController e Controller?
sobes.tech IA
Resposta da IA
@Controller é utilizado para tratar pedidos web e devolve os nomes das visualizações (.jsp, .html, etc.). É frequentemente utilizado na arquitetura MVC, onde é responsável por interagir com o modelo de dados e selecionar a visualização para exibir.
@RestController é uma versão especializada de @Controller. Converte automaticamente os valores devolvidos pelos métodos para o formato de resposta HTTP, geralmente em JSON ou XML. Isto é conseguido através da inclusão automática de @ResponseBody em cada método dentro do controlador. @RestController é mais frequentemente utilizado para criar serviços web RESTful que fornecem dados em bruto, em vez de devolver páginas HTML.
| Característica | @Controller |
@RestController |
|---|---|---|
| Propósito | Processar pedidos web, devolver visualizações | Criar serviços web RESTful, devolver dados (JSON, XML) |
@ResponseBody |
Requer uso explícito em cada método que devolve dados | Aplicado automaticamente a todos os métodos |
| Tipo de retorno | Nome da visualização (String), ModelAndView | Dados (objetos, List, etc.), serializados automaticamente |
Exemplo:
@Controller:
// Exemplo de uso de @Controller
@Controller
@RequestMapping("/view")
public class ViewController {
@GetMapping("/hello")
public String sayHello() {
return "hello"; // Devolve o nome da visualização (por exemplo, hello.jsp)
}
}
@RestController:
// Exemplo de uso de @RestController
@RestController
@RequestMapping("/api")
public class ApiController {
@GetMapping("/user")
public User getUser() {
// Suponha que exista uma classe User
return new User("John Doe", 30); // Devolve a representação JSON do objeto User
}
}