Sobes.tech
Junior

RestController və Controller arasında fərq nədir?

sobes.tech Süni İntellekt

AI-dan cavab

@Controller veb sorğularını işləmək üçün istifadə olunur və görünüş adlarını (.jsp, .html və s.) qaytarır. O, MVC memarlığında tez-tez istifadə olunur və məlumat modeliylə qarşılıqlı əlaqə və göstəriləcək görünüşün seçilməsi üçün məsuliyyət daşıyır.

@RestController @Controller-ın ixtisaslaşdırılmış versiyasıdır. O, metodların geri qaytardığı dəyərləri avtomatik olaraq HTTP cavab formatına, adətən JSON və ya XML-ə çevirir. Bu, @ResponseBody-nin hər bir metodda avtomatik daxil edilməsi ilə mümkün olur. @RestController daha çox RESTful veb xidmətləri yaratmaq üçün istifadə olunur, hansı ki, xam məlumatlar təqdim edir və HTML səhifələri qaytarmır.

Xüsusiyyət @Controller @RestController
Məqsəd Veb sorğularını işləmək, görünüşləri qaytarmaq RESTful veb xidmətləri yaratmaq, məlumatları (JSON, XML) qaytarmaq
@ResponseBody Hər metod üçün açıq şəkildə istifadə tələb edir Avtomatik olaraq bütün metodlara tətbiq olunur
Qaytarma tipi Görünüş adı (String), ModelAndView Məlumatlar (obyektlər, siyahılar və s.), avtomatik serializasiya olunur

Nümunə:

@Controller:

// `@Controller` istifadə nümunəsi
@Controller
@RequestMapping("/view")
public class ViewController {

    @GetMapping("/hello")
    public String sayHello() {
        return "hello"; // Görünüş adını qaytarır (məsələn, hello.jsp)
    }
}

@RestController:

// `@RestController` istifadə nümunəsi
@RestController
@RequestMapping("/api")
public class ApiController {

    @GetMapping("/user")
    public User getUser() {
        // User sinfi mövcuddur deyə düşünürük
        return new User("John Doe", 30); // JSON formatında User obyektinin nümayişi
    }
}