Junior
Aký je rozdiel medzi RestController a Controller?
sobes.tech AI
Odpoveď od AI
@Controller sa používa na spracovanie webových požiadaviek a vracia názvy pohľadov (.jsp, .html atď.). Často sa používa v architektúre MVC, kde je zodpovedný za interakciu s dátovým modelom a výber pohľadu na zobrazenie.
@RestController je špecializovaná verzia @Controller. Automaticky konvertuje hodnoty vracané metódami do formátu HTTP odpovede, zvyčajne do JSON alebo XML. To je umožnené automatickým začlenením @ResponseBody do každej metódy v kontroléri. @RestController sa častejšie používa na vytváranie RESTful webových služieb, ktoré poskytujú dáta v surovej podobe, namiesto vracania HTML stránok.
| Charakteristika | @Controller |
@RestController |
|---|---|---|
| Účel | Spracovanie webových požiadaviek, vracanie pohľadov | Vytváranie RESTful webových služieb, vracanie dát (JSON, XML) |
@ResponseBody |
Vyžaduje explicitné použitie pre každú metódu, ktorá vracia dáta | Automaticky sa aplikuje na všetky metódy |
| Typ vrátky | Názov pohľadu (String), ModelAndView | Dáta (objekty, zoznamy a pod.), automaticky serializované |
Príklad:
@Controller:
// Príklad použitia @Controller
@Controller
@RequestMapping("/view")
public class ViewController {
@GetMapping("/hello")
public String sayHello() {
return "hello"; // Vráti názov pohľadu (napr. hello.jsp)
}
}
@RestController:
// Príklad použitia @RestController
@RestController
@RequestMapping("/api")
public class ApiController {
@GetMapping("/user")
public User getUser() {
// Predpokladáme, že existuje trieda User
return new User("John Doe", 30); // Vráti JSON reprezentáciu objektu User
}
}