Sobes.tech
Junior

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