Этот вопрос проверяет понимание аннотаций Spring MVC и их применения в разработке API и веб-приложений.
@Controller используется для обработки запросов в традиционных веб-приложениях и возвращает HTML-представления. @RestController автоматически возвращает данные в формате JSON или XML, что делает его идеальным для создания RESTful API.
Аннотации @Controller и @RestController используются для создания контроллеров в Spring, но их подходы к обработке данных различаются.
@Controller:
Это аннотация для создания веб-контроллеров, которые возвращают HTML.
Она используется в приложениях, где сервер генерирует страницы для отображения пользователю.
Если необходимо вернуть данные (например, JSON), нужно добавить аннотацию @ResponseBody.
Пример @Controller:
@Controller
public class MyController {
@RequestMapping("/greeting")
public String greet(Model model) {
model.addAttribute("message", "Hello, World!");
return "greeting"; // Имя HTML-шаблона
}
}@RestController:
Это аннотация для создания API, возвращающих данные (JSON, XML).
По сути, это сочетание @Controller и @ResponseBody, поэтому данные автоматически сериализуются и отправляются в теле HTTP-ответа.
Пример @RestController:
@RestController
public class MyRestController {
@RequestMapping("/api/data")
public Map<String, String> getData() {
Map<String, String> data = new HashMap<>();
data.put("message", "Hello, World!");
return data; // JSON-ответ
}
} Основное различие: @Controller подходит для веб-приложений с серверной генерацией страниц, а @RestController — для RESTful API, где важны данные, а не представления.
Заключение: Используйте @Controller для приложений с HTML-страницами и @RestController для API.