Kāda ir atšķirība starp RestController un Controller Spring?
sobes.tech AI
Atbilde no AI
@Controller iezīmē klasi kā Spring MVC kontrolieri. Šī klase parasti atgriež skatu nosaukumus, kurus pēc tam apstrādā skatu risinātāji, lai parādītu lietotāja saskarni (piemēram, HTML lapas). @Controller bieži tiek izmantots, lai izveidotu tīmekļa lietojumprogrammas ar servera puses renderēšanu.
@RestController ir @Controller specializēta versija. Tas automātiski pievieno @ResponseBody pie katras metodes. Tas nozīmē, ka @RestController metodes pēc noklusējuma atgriež datus (piemēram, JSON vai XML), nevis skatu nosaukumus. @RestController ir ideāls RESTful tīmekļa pakalpojumu izveidei, kas nodrošina datus klientiem (piemēram, frontend lietojumprogrammām vai citām pakalpojumiem).
Galvenā atšķirība:
@Controller: atgriež skatu nosaukumus.@RestController: atgriež datus (automātiski pievieno@ResponseBody).
@Controller piemērs:
@Controller
public class ViewController {
@GetMapping("/hello")
public String sayHello(Model model) {
model.addAttribute("message", "Hello, world!");
return "helloView"; // Atgriež skata nosaukumu
}
}
@RestController piemērs:
@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; // Atgriež Map, kas tiks konvertēts uz JSON
}
}