Spring-də RestController və Controller anotasiya arasındakı fərq nədir?
sobes.tech Süni İntellekt
AI-dan cavab
@Controller veb sorğularını işləyən nəzarətçiləri müəyyən etmək üçün istifadə olunur. Belə bir sinifdəki metodlar adətən görünüş adlarını (view names) qaytarır, sonra Spring MVC onları render edir.
@RestController isə @Controller-ın ixtisaslaşdırılmış versiyasıdır. O, @Controller və @ResponseBody-ni birləşdirir. Bu, belə bir sinifdəki metodların standart olaraq görünüş adları qaytarmadığı, əvəzinə obyektləri, onlar avtomatik olaraq JSON və ya XML-ə seriallaşdırılır (konfiqurasiyadan asılı olaraq) və HTTP cavab gövdəsində müştəriyə göndərilir.
Əsas fərq odur ki, @Controller ənənəvi server tərəfi render ilə veb tətbiqləri yaratmaq üçün nəzərdə tutulub, @RestController isə RESTful veb xidmətləri yaratmaq üçün, cavablar məlumat şəklində təqdim olunur.
@RestController — bu @Controller və @ResponseBody üçün sintaktik şəkərdir.
// @Controller istifadə nümunəsi
@Controller
@RequestMapping("/pages")
public class ViewController {
@GetMapping("/welcome")
public String showWelcomePage() {
return "welcome"; // Görünüş adını qaytarır (welcome.html, welcome.jsp və s.)
}
}
// @RestController istifadə nümunəsi
@RestController
@RequestMapping("/api")
public class ApiController {
@GetMapping("/users/{id}")
public User getUserById(@PathVariable Long id) {
// JSON/XML-ə avtomatik seriallaşdırılan obyekt
return userService.findById(id);
}
}