Sobes.tech
Junior

Qual è la differenza tra RestController e Controller?

sobes.tech AI

Risposta dell'AI

@Controller viene utilizzato per gestire le richieste web e restituisce i nomi delle visualizzazioni (.jsp, .html, ecc.). Viene spesso usato nell'architettura MVC, dove si occupa dell'interazione con il modello di dati e della selezione della vista da mostrare.

@RestController è una versione specializzata di @Controller. Converte automaticamente i valori restituiti dai metodi nel formato di risposta HTTP, solitamente in JSON o XML. Ciò avviene grazie all'inclusione automatica di @ResponseBody in ogni metodo all'interno del controller. @RestController è più comunemente usato per creare servizi web RESTful che forniscono dati grezzi, invece di restituire pagine HTML.

Caratteristica @Controller @RestController
Scopo Gestire richieste web, restituire visualizzazioni Creare servizi web RESTful, restituire dati (JSON, XML)
@ResponseBody Richiede uso esplicito in ogni metodo che restituisce dati Applicato automaticamente a tutti i metodi
Tipo di ritorno Nome della visualizzazione (String), ModelAndView Dati (oggetti, List, ecc.), serializzati automaticamente

Esempio:

@Controller:

// Esempio di utilizzo di @Controller
@Controller
@RequestMapping("/view")
public class ViewController {

    @GetMapping("/hello")
    public String sayHello() {
        return "hello"; // Restituisce il nome della visualizzazione (ad esempio, hello.jsp)
    }
}

@RestController:

// Esempio di utilizzo di @RestController
@RestController
@RequestMapping("/api")
public class ApiController {

    @GetMapping("/user")
    public User getUser() {
        // Supponiamo che esista una classe User
        return new User("John Doe", 30); // Restituisce la rappresentazione JSON dell'oggetto User
    }
}