Spring-ში RestController და Controller-ს შორის რა განსხვავებაა?
sobes.tech AI
პასუხი AI-სგან
@Controller კლასს როგორც Spring MVC კონტროლერს აღნიშნავს. ეს კლასი ჩვეულებრივ აბრუნებს ხედის სახელებს, რომლებიც შემდეგ ხედის გამჭვირვალე საშუალებებით მუშავდება და მომხმარებლის ინტერფეისს აჩვენებს (მაგალითად, 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; // Map, რომელიც გარდაიქმნება JSON-ის
}
}