Sobes.tech
Junior

Mi a különbség a RestController és a Controller között?

sobes.tech MI

Válasz az MI-től

A @Controller a webkérések kezelésére szolgál, és a nézetek nevét (.jsp, .html stb.) adja vissza. Gyakran használják MVC-architektúrában, ahol a modell adataival való interakcióért és a megjelenítendő nézet kiválasztásáért felelős.

A @RestController a @Controller egy specializált változata. Automatikusan átalakítja a metódusok által visszaadott értékeket HTTP-válasz formátumba, általában JSON vagy XML formátumba. Ez az automatikus @ResponseBody beállításnak köszönhető minden kontrollermetódusban. A @RestController gyakrabban használatos RESTful webszolgáltatások létrehozására, amelyek nyers adatokat szolgáltatnak, nem pedig HTML-oldalakat.

Jellemző @Controller @RestController
Cél Webkérések kezelése, nézetek visszaadása RESTful webszolgáltatások létrehozása, adatok visszaadása (JSON, XML)
@ResponseBody Kifejezett használat szükséges minden adatot visszaadó módszerhez Automatikusan alkalmazva minden módszerre
Visszatérési típus Névnév (String), ModelAndView Adatok (objektumok, listák stb.), automatikusan szérializálva

Példa:

@Controller:

// @Controller használatának példája
@Controller
@RequestMapping("/view")
public class ViewController {

    @GetMapping("/hello")
    public String sayHello() {
        return "hello"; // A nézet neve (pl. hello.jsp)
    }
}

@RestController:

// @RestController használatának példája
@RestController
@RequestMapping("/api")
public class ApiController {

    @GetMapping("/user")
    public User getUser() {
        // Tegyük fel, hogy létezik egy User osztály
        return new User("John Doe", 30); // JSON formátumban adja vissza a User objektumot
    }
}