Sobes.tech
Junior

Фарқи байни RestController ва Controller чист?

sobes.tech AI

Ҷавоб аз AI

@Controller барои коркарди дархостҳои веб истифода мешавад ва номҳои намоишҳоро бармегардонад (.jsp, .html ва ғайра). Он дар меъмории MVC, ки масъул барои ҳамкорӣ бо модели маълумот ва интихоби намоиш барои намоиш аст, бисёр истифода мешавад.

@RestController версияи махсуси @Controller мебошад. Автоматӣ арзишҳои баргардонидашударо ба формати ҷавоби HTTP, одатан дар JSON ё XML, табдил медиҳад. Ин тавассути дохилкунии автоматии @ResponseBody ба ҳар як метод дар дохили контроллер имконпазир аст. @RestController бештар барои эҷоди хидматҳои веб RESTful, ки маълумотҳоро дар шакли хом пешниҳод мекунанд, истифода мешавад, на барои баргардонидани саҳифаҳои HTML.

Хусусият @Controller @RestController
Ҳадаф Коркарди дархостҳои веб, баргардонидани намоишҳо Эҷоди хидматҳои веб RESTful, баргардонидани маълумот (JSON, XML)
@ResponseBody Талаб мекунад истифодаи ошкоро барои ҳар як метод, ки маълумот бармегардонад Автоматӣ татбиқ мешавад ба ҳама методҳо
Намуди баргардонидашуда Номи намоиш (String), ModelAndView Маълумотҳо (объектҳо, рӯйхатҳо ва ғайра), автоматӣ сериализатсия мешаванд

Масалан:

@Controller:

// Маслиҳат истифодаи @Controller
@Controller
@RequestMapping("/view")
public class ViewController {

    @GetMapping("/hello")
    public String sayHello() {
        return "hello"; // Варианти номи намоиш (масалан, hello.jsp)
    }
}

@RestController:

// Маслиҳат истифодаи @RestController
@RestController
@RequestMapping("/api")
public class ApiController {

    @GetMapping("/user")
    public User getUser() {
        // Гумон мекунем, ки класи User вуҷуд дорад
        return new User("John Doe", 30); // JSON намоиши объекти User
    }
}