Junior
Quelle est la différence entre RestController et Controller?
sobes.tech IA
Réponse de l'IA
@Controller est utilisé pour traiter les requêtes web et renvoie les noms des vues (.jsp, .html, etc.). Il est souvent utilisé dans l'architecture MVC, où il gère l'interaction avec le modèle de données et le choix de la vue à afficher.
@RestController est une version spécialisée de @Controller. Il convertit automatiquement les valeurs retournées par les méthodes au format de réponse HTTP, généralement en JSON ou XML. Cela est rendu possible grâce à l'inclusion automatique de @ResponseBody pour chaque méthode du contrôleur. @RestController est plus souvent utilisé pour créer des services web RESTful qui fournissent des données brutes, plutôt que de retourner des pages HTML.
| Caractéristique | @Controller |
@RestController |
|---|---|---|
| But | Traiter les requêtes web, retourner des vues | Créer des services web RESTful, retourner des données (JSON, XML) |
@ResponseBody |
Nécessite une utilisation explicite pour chaque méthode retournant des données | Appliqué automatiquement à toutes les méthodes |
| Type de retour | Nom de la vue (String), ModelAndView | Données (objets, List, etc.), sérialisées automatiquement |
Exemple :
@Controller :
// Exemple d'utilisation de @Controller
@Controller
@RequestMapping("/view")
public class ViewController {
@GetMapping("/hello")
public String sayHello() {
return "hello"; // Retourne le nom de la vue (par exemple, hello.jsp)
}
}
@RestController :
// Exemple d'utilisation de @RestController
@RestController
@RequestMapping("/api")
public class ApiController {
@GetMapping("/user")
public User getUser() {
// Supposons qu'il existe une classe User
return new User("John Doe", 30); // Retourne la représentation JSON de l'objet User
}
}