Qual è la differenza tra RestController e Controller in Spring?
sobes.tech AI
Risposta dell'AI
@Controller segna la classe come controller Spring MVC. Questa classe di solito restituisce nomi di visualizzazioni, che vengono poi elaborati dai risolutori di visualizzazioni per mostrare l'interfaccia utente (ad esempio, pagine HTML). @Controller è spesso usato per creare applicazioni web con rendering lato server.
@RestController è una variante specializzata di @Controller. Aggiunge automaticamente l'annotazione @ResponseBody a ogni metodo. Ciò significa che i metodi di @RestController restituiscono di default dati (ad esempio, JSON o XML), anziché nomi di visualizzazioni. @RestController è ideale per creare servizi web RESTful che forniscono dati ai clienti (ad esempio, applicazioni frontend o altri servizi).
Differenza principale:
@Controller: Restituisce nomi di visualizzazioni.@RestController: Restituisce dati (aggiunge automaticamente@ResponseBody).
Esempio di @Controller:
@Controller
public class ViewController {
@GetMapping("/hello")
public String sayHello(Model model) {
model.addAttribute("message", "Hello, world!");
return "helloView"; // Restituisce il nome della visualizzazione
}
}
Esempio di @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; // Restituisce una mappa che sarà convertita in JSON
}
}