Junior
რა განსხვავებაა RestController და Controller შორის?
sobes.tech AI
პასუხი AI-სგან
@Controller ვებ-შეტყობინებების დამუშავებისთვის გამოიყენება და აბრუნებს წარმოდგენების სახელებს (.jsp, .html და სხვა). ხშირად გამოიყენება MVC არქიტექტურაში, სადაც პასუხისმგებელია მონაცემთა მოდელთან ურთიერთობაზე და წარმოდგენის არჩევაზე.
@RestController არის @Controller-ის სპეციალიზებული ვერსია. ის ავტომატურად გარდაქმნის მეთოდების მიერ დაბრუნებულ მნიშვნელობებს HTTP პასუხის ფორმატში, ჩვეულებრივ JSON ან XML-ში. ეს ხდება ავტომატური @ResponseBody-ის ჩართვის საშუალებით თითოეულ მეთოდში. @RestController ხშირად გამოიყენება RESTful ვებ სერვისების შექმნისთვის, რომლებიც უზრუნველყოფენ მონაცემებს როგორც ნედლ, ხოლო არა HTML გვერდებს.
| მახასიათებელი | @Controller |
@RestController |
|---|---|---|
| დანიშნულება | ვებ მოთხოვნების დამუშავება, წარმოდგენების დაბრუნება | RESTful ვებ სერვისების შექმნა, მონაცემების დაბრუნება (JSON, XML) |
@ResponseBody |
საჭიროებს გამოკვეთილ გამოყენებას თითოეულ მეთოდში, რომელიც მონაცემებს აბრუნებს | ავტომატურად გამოიყენება ყველა მეთოდზე |
| დაბრუნების ტიპი | წარმოდგენის სახელი (String), ModelAndView | მონაცემები (ობიექტები, სია და ა.შ.), ავტომატურად სერიულიალიზებული |
მაგალითი:
@Controller:
// `@Controller`-ის გამოყენების მაგალითი
@Controller
@RequestMapping("/view")
public class ViewController {
@GetMapping("/hello")
public String sayHello() {
return "hello"; // აბრუნებს წარმოდგენის სახელს (მაგ., hello.jsp)
}
}
@RestController:
// `@RestController`-ის გამოყენების მაგალითი
@RestController
@RequestMapping("/api")
public class ApiController {
@GetMapping("/user")
public User getUser() {
// ვივარაუდოთ, რომ არსებობს User კლასი
return new User("John Doe", 30); // აბრუნებს JSON-ად წარმოჩენას User ობიექტის
}
}