Kuo skiriasi RestController ir Controller Spring?
sobes.tech AI
Atsakymas iš AI
@Controller žymi klasę kaip Spring MVC kontrolerį. Šis klasė dažniausiai grąžina vaizdų pavadinimus, kurie vėliau apdorojami vaizdų sprendėjų, kad būtų rodomas naudotojo sąsaja (pavyzdžiui, HTML puslapiai). @Controller dažnai naudojamas kuriant žiniatinklio programas su serverio pusės atvaizdavimu.
@RestController yra @Controller specializuota versija. Ji automatiškai prideda @ResponseBody prie kiekvieno metodo. Tai reiškia, kad @RestController metodai pagal numatytuosius nustatymus grąžina duomenis (pavyzdžiui, JSON arba XML), o ne vaizdų pavadinimus. @RestController yra idealus kuriant RESTful žiniatinklio paslaugas, kurios teikia duomenis klientams (pavyzdžiui, frontend programoms ar kitoms paslaugoms).
Pagrindinis skirtumas:
@Controller: grąžina vaizdų pavadinimus.@RestController: grąžina duomenis (automatiškai prideda@ResponseBody).
@Controller pavyzdys:
@Controller
public class ViewController {
@GetMapping("/hello")
public String sayHello(Model model) {
model.addAttribute("message", "Hello, world!");
return "helloView"; // Grąžina vaizdo pavadinimą
}
}
@RestController pavyzdys:
@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; // Grąžina Map, kuris bus konvertuotas į JSON
}
}