Встречается на собеседованиях • сегодня

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

@RestController - это специализированная версия @Controller, которая автоматически добавляет аннотацию @ResponseBody ко всем методам. Это означает, что возвращаемые значения методов будут напрямую сериализованы в HTTP-ответ (обычно JSON/XML).

@Controller требует явного указания @ResponseBody для методов, возвращающих данные, или использования ModelAndView для рендеринга шаблонов.

Пример:

java
@RestController
public class MyRestController {
    @GetMapping("/data")
    public Data getData() {  // Автоматически преобразуется в JSON
        return new Data();
    }
}

@Controller
public class MyController {
    @GetMapping("/view")
    public String getView(Model model) {  // Возвращает имя шаблона
        model.addAttribute("attr", "value");
        return "template";
    }
    
    @ResponseBody
    @GetMapping("/api")
    public Data getData() {  // Требуется @ResponseBody
        return new Data();
    }
}
Sophi
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
Попробовать бесплатноArrow

Следующий вопрос

Это единственный вопрос по вашему фильтру

как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы