Sobes.tech
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
    }
}