Назад к вопросам
Junior
71
questionbank

В чем разница между RestController и Controller?

Sobes Copilot

Получайте ответы в реальном времени

Ответ от нейросети

sobes.tech AI

@Controller используется для обработки веб-запросов и возвращает имена представлений (.jsp, .html и т.п.). Он часто используется в MVC-архитектуре, где отвечает за взаимодействие с моделью данных и выбор представления для отображения.

@RestController является специализированной версией @Controller. Он автоматически преобразует возвращаемые значения методов в формат HTPP-ответа, обычно в JSON или XML. Это происходит благодаря автоматическому включению @ResponseBody для каждого метода внутри контроллера. @RestController чаще используется для создания RESTful веб-сервисов, которые предоставляют данные в чистом виде, а не возвращают HTML-страницы.

Характеристика @Controller @RestController
Предназначение Обработка веб-запросов, возврат представлений Создание RESTful веб-сервисов, возврат данных (JSON, XML)
@ResponseBody Требует явного использования для каждого метода, возвращающего данные Автоматически применяется ко всем методам
Возвращаемый тип Имя представления (String), ModelAndView Данные (объекты, List и т.д.), автоматически сериализуются

Пример:

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