Sobes.tech
Junior

Wat is het verschil tussen RestController en Controller in Spring?

sobes.tech AI

Antwoord van AI

@Controller markeert de klasse als Spring MVC controller. Deze klasse retourneert meestal view-namen, die vervolgens worden verwerkt door view resolvers om de gebruikersinterface weer te geven (bijvoorbeeld HTML-pagina's). @Controller wordt vaak gebruikt voor het maken van webapplicaties met server-side rendering.

@RestController is een gespecialiseerde variant van @Controller. Het voegt automatisch de annotatie @ResponseBody toe aan elke methode. Dit betekent dat de methoden in @RestController standaard data (zoals JSON of XML) retourneren, in plaats van view-namen. @RestController is ideaal voor het maken van RESTful webservices die data aan clients leveren (bijvoorbeeld frontend-applicaties of andere services).

Belangrijkste verschil:

  • @Controller: retourneert view-namen.
  • @RestController: retourneert data (voegt automatisch @ResponseBody toe).

Voorbeeld van @Controller:

@Controller
public class ViewController {

    @GetMapping("/hello")
    public String sayHello(Model model) {
        model.addAttribute("message", "Hello, world!");
        return "helloView"; // Retourneert de naam van de view
    }
}

Voorbeeld van @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; // Retourneert een Map die wordt omgezet in JSON
    }
}