Sobes.tech
Junior

Koja je razlika između RestController i Controller u Springu?

sobes.tech АИ

Одговор од АИ

@Controller označava klasu kao kontroler Spring MVC. Ova klasa obično vraća imena prikaza, koja zatim obrađuju rezolutori prikaza za prikaz korisničkog interfejsa (na primer, HTML stranice). @Controller se često koristi za kreiranje web aplikacija sa server-side renderovanjem.

@RestController je specijalizovana varijanta @Controller. Automatski dodaje anotaciju @ResponseBody na svaku metodu. To znači da metode u @RestController podrazumevano vraćaju podatke (na primer, JSON ili XML), a ne imena prikaza. @RestController je idealan za kreiranje RESTful web servisa koji pružaju podatke klijentima (na primer, frontend aplikacijama ili drugim servisima).

Glavna razlika:

  • @Controller: Vraća imena prikaza.
  • @RestController: Vraća podatke (automatski dodaje @ResponseBody).

Primer @Controller:

@Controller
public class ViewController {

    @GetMapping("/hello")
    public String sayHello(Model model) {
        model.addAttribute("message", "Hello, world!");
        return "helloView"; // Vraća ime prikaza
    }
}

Primer @RestController:

@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; // Vraća Map koja će biti konvertovana u JSON
    }
}