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