Spring'da RestController va Controller o'rtasidagi farq nima?
sobes.tech AI
AIdan javob
@Controller Spring MVC контролери сифатида классни белгилайди. Бу класс одатда кўрсатиш номларини қайтариб, улар кейин view резолверлар томонидан ишланиб, фойдаланувчи интерфейсини кўрсатиш учун ишлатилади (масалан, 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 қайтарилади
}
}