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
}
}