Логотип YeaHub

База вопросов

Собеседования

Тренажёр

База ресурсов

Обучение

Навыки

Войти

Выбери, каким будет IT завтра — вместе c нами!

YeaHub — это полностью открытый проект, призванный объединить и улучшить IT-сферу. Наш исходный код доступен для просмотра на GitHub. Дизайн проекта также открыт для ознакомления в Figma.

© 2026 YeaHub

Документы

Медиа

Назад
Вопрос про Spring: controller, restcontroller, json

В чём основное различие между @RestController и @Controller?

Этот вопрос проверяет понимание аннотаций 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.

Уровень

  • Рейтинг:

    3

  • Сложность:

    7

Навыки

  • Spring

    Spring

Ключевые слова

#controller

#restcontroller

#json

Подпишись на Java Developer в телеграм