RestController va Controller o'rtasidagi farq nima?
sobes.tech AI
AIdan javob
@Controller veb so'rovlarni qayta ishlash uchun ishlatiladi va ko'rsatmalar nomlarini (.jsp, .html va boshqalar) qaytaradi. U ko'pincha MVC arxitekturasida, u ma'lumot model bilan o'zaro aloqada bo'lib, ko'rsatishni tanlash uchun javobgardir.
@RestController @Controller ning maxsus versiyasidir. U metodlar tomonidan qaytarilgan qiymatlarni avtomatik ravishda HTTP javob formatiga, odatda JSON yoki XML ga aylantiradi. Bu @ResponseBody ning avtomatik qo'shilishi orqali amalga oshiriladi, bu esa har bir metod uchun alohida qo'llaniladi. @RestController ko'pincha RESTful veb-xizmatlar yaratish uchun ishlatiladi, ular ma'lumotlarni to'g'ridan-to'g'ri taqdim etadi, HTML sahifalarini qaytarmaydi.
| Xususiyat | @Controller |
@RestController |
|---|---|---|
| Maqsad | Veb so'rovlarni qayta ishlash, ko'rsatmalarni qaytarish | RESTful veb-xizmatlar yaratish, ma'lumotlarni (JSON, XML) qaytarish |
@ResponseBody |
Har bir ma'lumot qaytaradigan metod uchun aniq ishlatish talab qilinadi | Avtomatik ravishda barcha metodlarga qo'llaniladi |
| Qaytish turi | Ko'rsatma nomi (String), ModelAndView | Ma'lumotlar (ob'ektlar, ro'yxatlar va boshqalar), avtomatik serializatsiya qilinadi |
Misol:
@Controller:
// `@Controller` dan foydalanish misoli
@Controller
@RequestMapping("/view")
public class ViewController {
@GetMapping("/hello")
public String sayHello() {
return "hello"; // Ko'rsatma nomini qaytaradi (masalan, hello.jsp)
}
}
@RestController:
// `@RestController` dan foydalanish misoli
@RestController
@RequestMapping("/api")
public class ApiController {
@GetMapping("/user")
public User getUser() {
// Faraz qilamiz, User klassi mavjud
return new User("John Doe", 30); // JSON formatida User ob'ekti
}
}