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