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@ResponseBodytoe).
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
}
}