Junior
¿Cuál es la diferencia entre RestController y Controller?
sobes.tech AI
Respuesta de la IA
@Controller se utiliza para manejar solicitudes web y devuelve los nombres de las vistas (.jsp, .html, etc.). Se usa a menudo en la arquitectura MVC, donde se encarga de interactuar con el modelo de datos y seleccionar la vista para mostrar.
@RestController es una versión especializada de @Controller. Convierte automáticamente los valores devueltos por los métodos en formato de respuesta HTTP, generalmente en JSON o XML. Esto se logra mediante la inclusión automática de @ResponseBody en cada método dentro del controlador. @RestController se usa más comúnmente para crear servicios web RESTful que proporcionan datos en bruto, en lugar de devolver páginas HTML.
| Característica | @Controller |
@RestController |
|---|---|---|
| Propósito | Manejar solicitudes web, devolver vistas | Crear servicios web RESTful, devolver datos (JSON, XML) |
@ResponseBody |
Requiere uso explícito en cada método que devuelve datos | Se aplica automáticamente a todos los métodos |
| Tipo de retorno | Nombre de vista (String), ModelAndView | Datos (objetos, List, etc.), serializados automáticamente |
Ejemplo:
@Controller:
// Ejemplo de uso de @Controller
@Controller
@RequestMapping("/view")
public class ViewController {
@GetMapping("/hello")
public String sayHello() {
return "hello"; // Devuelve el nombre de la vista (por ejemplo, hello.jsp)
}
}
@RestController:
// Ejemplo de uso de @RestController
@RestController
@RequestMapping("/api")
public class ApiController {
@GetMapping("/user")
public User getUser() {
// Supongamos que existe una clase User
return new User("John Doe", 30); // Devuelve la representación JSON del objeto User
}
}