Sobes.tech
Junior

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 @ResponseBody ekler).

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