Spring'de RestController ile Controller arasındaki fark nedir?
sobes.tech yapay zeka
AI'dan gelen yanıt
@Controller sınıfı Spring MVC denetleyicisi olarak işaretler. Bu sınıf genellikle görünüm adlarını döner ve bunlar daha sonra görünüm çözücüleri tarafından işlenerek kullanıcı arayüzünü gösterir (örneğin, HTML sayfaları). @Controller sıklıkla sunucu tarafı render ile web uygulamaları oluşturmak için kullanılır.
@RestController ise @Controller'ın özel bir versiyonudur. Her metoda otomatik olarak @ResponseBody ekler. Bu, @RestController içindeki metodların varsayılan olarak veri (örneğin, JSON veya XML) döndürdüğü anlamına gelir, görünüm adları değil. @RestController, RESTful web servisleri oluşturmak için idealdir ve bu servisler müşterilere (örneğin, frontend uygulamalara veya diğer servislere) veri sağlar.
Ana fark:
@Controller: Görünüm adlarını döner.@RestController: Veriyi döner (otomatik olarak@ResponseBodyekler).
@Controller örneği:
@Controller
public class ViewController {
@GetMapping("/hello")
public String sayHello(Model model) {
model.addAttribute("message", "Hello, world!");
return "helloView"; // Görünüm adını döner
}
}
@RestController örneği:
@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'a dönüştürülecek Map döner
}
}