Qual é a diferença entre RestController e Controller no Spring?
sobes.tech IA
Resposta da IA
O @Controller marca a classe como controlador Spring MVC. Esta classe normalmente devolve nomes de visualizações, que são então processados pelos resolvedores de visualizações para exibir a interface do utilizador (por exemplo, páginas HTML). O @Controller é frequentemente usado para criar aplicações web com renderização no servidor.
@RestController é uma variante especializada de @Controller. Ela adiciona automaticamente a anotação @ResponseBody a cada método. Isto significa que os métodos de @RestController retornam por padrão dados (por exemplo, JSON ou XML), em vez de nomes de visualizações. O @RestController é ideal para criar serviços web RESTful que fornecem dados aos clientes (por exemplo, aplicações frontend ou outros serviços).
Diferença principal:
@Controller: Retorna nomes de visualizações.@RestController: Retorna dados (adiciona automaticamente@ResponseBody).
Exemplo de @Controller:
@Controller
public class ViewController {
@GetMapping("/hello")
public String sayHello(Model model) {
model.addAttribute("message", "Hello, world!");
return "helloView"; // Retorna o nome da visualização
}
}
Exemplo de @RestController:
@RestController
public class DataController {
@GetMapping("/data")
public Map<String, String> getData() {
Map<String, String> response = new HashMap<>();
response.put("status", "success");
response.put("message", "Data retrieved");
return response; // Retorna um Map que será convertido em JSON
}
}