Junior
Koja je razlika između RestController i Controller u Springu?
sobes.tech АИ
Одговор од АИ
@Controller označava klasu kao kontroler Spring MVC. Ova klasa obično vraća imena prikaza, koja zatim obrađuju rezolutori prikaza za prikaz korisničkog interfejsa (na primer, HTML stranice). @Controller se često koristi za kreiranje web aplikacija sa server-side renderovanjem.
@RestController je specijalizovana varijanta @Controller. Automatski dodaje anotaciju @ResponseBody na svaku metodu. To znači da metode u @RestController podrazumevano vraćaju podatke (na primer, JSON ili XML), a ne imena prikaza. @RestController je idealan za kreiranje RESTful web servisa koji pružaju podatke klijentima (na primer, frontend aplikacijama ili drugim servisima).
Glavna razlika:
@Controller: Vraća imena prikaza.@RestController: Vraća podatke (automatski dodaje@ResponseBody).
Primer @Controller:
@Controller
public class ViewController {
@GetMapping("/hello")
public String sayHello(Model model) {
model.addAttribute("message", "Hello, world!");
return "helloView"; // Vraća ime prikaza
}
}
Primer @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; // Vraća Map koja će biti konvertovana u JSON
}
}