Sobes.tech
Junior

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
    }
}