Springдеги RestController жана Controller ортосунда кандай айырма бар?
sobes.tech AI
AIден жооп
@Controller классты Spring MVC контролери катары белгилейт. Бул класс көбүнчө көрүнүштөрдүн аттарын кайтарат, алар кийин view resolverлери тарабынан иштетилип, колдонуучу интерфейсин көрсөтөт (мисалы, HTML баракчалар). @Controller көбүнчө сервердик рендеринг менен веб колдонмолорду түзүү үчүн колдонулат.
@RestController — @Controllerнин атайын түрү. Ал автоматтык түрдө ар бир ыкмага @ResponseBody кошот. Бул деген, @RestController ичиндеги ыкмалар стандарттык түрдө маалыматтарды (мисалы, JSON же XML) кайтарат, көрүнүштөрдүн аттарын эмес. @RestController RESTful веб кызматтарды түзүү үчүн эң ылайыктуу, ал кардарларга (мисалы, фронтенд колдонмолорго же башка кызматтарга) маалыматтарды камсыз кылат.
Негизги айырмасы:
@Controller: көрүнүштөрдүн аттарын кайтарат.@RestController: маалыматтарды кайтарат (автоматтык түрдө@ResponseBodyкошот).
@Controller мисалы:
@Controller
public class ViewController {
@GetMapping("/hello")
public String sayHello(Model model) {
model.addAttribute("message", "Hello, world!");
return "helloView"; // көрүнүштүн атын кайтарат
}
}
@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; // JSONго айлануучу Map кайтарат
}
}