Sobes.tech
Junior

Springдеги RestController жана Controller ортосунда кандай айырма бар?

sobes.tech AI

AIден жооп

@Controller классты Spring MVC контролери катары белгилейт. Бул класс көбүнчө көрүнүштөрдүн аттарын кайтарат, алар кийин view resolverлери тарабынан иштетилип, колдонуучу интерфейсин көрсөтөт (мисалы, HTML баракчалар). @Controller көбүнчө сервердик рендеринг менен веб колдонмолорду түзүү үчүн колдонулат.

@RestController@Controllerнин атайын түрү. Ал автоматтык түрдө ар бир ыкмага @ResponseBody кошот. Бул деген, @RestController ичиндеги ыкмалар стандарттык түрдө маалыматтарды (мисалы, JSON же XML) кайтарат, көрүнүштөрдүн аттарын эмес. @RestController RESTful веб кызматтарды түзүү үчүн эң ылайыктуу, ал кардарларга (мисалы, фронтенд колдонмолорго же башка кызматтарга) маалыматтарды камсыз кылат.

Негизги айырмасы:

  • @Controller: көрүнүштөрдүн аттарын кайтарат.
  • @RestController: маалыматтарды кайтарат (автоматтык түрдө @ResponseBody кошот).

@Controller мисалы:

@Controller
public class ViewController {

    @GetMapping("/hello")
    public String sayHello(Model model) {
        model.addAttribute("message", "Hello, world!");
        return "helloView"; // көрүнүштүн атын кайтарат
    }
}

@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; // JSONго айлануучу Map кайтарат
    }
}