Spring-də RestController və Controller arasındakı fərq nədir?
sobes.tech Süni İntellekt
AI-dan cavab
@Controller Spring MVC nəzarətçisini kimi sinifə işarə edir. Bu sinif adətən görünüş adlarını qaytarır və bunlar daha sonra görünüş həll edənlər tərəfindən işlənir və istifadəçi interfeysini göstərir (məsələn, HTML səhifələri). @Controller adətən server tərəfi render ilə veb tətbiqləri yaratmaq üçün istifadə olunur.
@RestController isə @Controller-ın ixtisaslaşdırılmış variantıdır. O, hər bir metod üçün avtomatik olaraq @ResponseBody əlavə edir. Bu, @RestController-dakı metodların standart olaraq məlumatlar (məsələn, JSON və ya XML) qaytardığı, görünüş adları deyil. @RestController RESTful veb xidmətləri yaratmaq üçün idealdır və bu xidmətlər müştərilərə (məsələn, frontend tətbiqlərə və ya digər xidmətlərə) məlumatlar təqdim edir.
Əsas fərq:
@Controller: görünüş adlarını qaytarır.@RestController: məlumatları qaytarır (avtomatik olaraq@ResponseBodyəlavə edir).
@Controller nümunəsi:
@Controller
public class ViewController {
@GetMapping("/hello")
public String sayHello(Model model) {
model.addAttribute("message", "Hello, world!");
return "helloView"; // görünüş adını qaytarır
}
}
@RestController nümunəsi:
@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; // JSON-ə çevriləcək Map qaytarır
}
}