Aký je rozdiel medzi RestController a Controller v Spring?
sobes.tech AI
Odpoveď od AI
@Controller označuje triedu ako kontrolér Spring MVC. Táto trieda zvyčajne vracia názvy pohľadov, ktoré sú následne spracované resolvermi pohľadov na zobrazenie používateľského rozhrania (napríklad HTML stránky). @Controller sa často používa na vytváranie webových aplikácií s renderovaním na strane servera.
@RestController je špecializovaná verzia @Controller. Automaticky pridáva anotáciu @ResponseBody ku každej metóde. To znamená, že metódy v @RestController predvolene vracajú dáta (napríklad JSON alebo XML), nie názvy pohľadov. @RestController je ideálny na vytváranie RESTful webových služieb, ktoré poskytujú dáta klientom (napríklad frontendovým aplikáciám alebo iným službám).
Hlavný rozdiel:
@Controller: Vracia názvy pohľadov.@RestController: Vracia dáta (automaticky pridáva@ResponseBody).
Príklad @Controller:
@Controller
public class ViewController {
@GetMapping("/hello")
public String sayHello(Model model) {
model.addAttribute("message", "Hello, world!");
return "helloView"; // Vracia názov pohľadu
}
}
Príklad @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; // Vracia Map, ktorá bude konvertovaná na JSON
}
}