В чём основное различие между @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

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

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