Sobes.tech
Junior

Каква е разликата между RestController и Controller?

sobes.tech AI

Отговор от AI

@Controller се използва за обработка на уеб заявки и връща имената на изгледите (.jsp, .html и др.). Често се използва в архитектурата MVC, където отговаря за взаимодействието с модела на данните и избора на изглед за показване.

@RestController е специализирана версия на @Controller. Той автоматично преобразува стойностите, върнати от методите, във формат на HTTP отговор, обикновено в JSON или XML. Това се постига чрез автоматичното включване на @ResponseBody във всеки метод в контролера. @RestController се използва по-често за създаване на RESTful уеб услуги, които предоставят данни в суров вид, а не връщат HTML страници.

Характеристика @Controller @RestController
Назначение Обработка на уеб заявки, връщане на изгледи Създаване на RESTful уеб услуги, връщане на данни (JSON, XML)
@ResponseBody Изисква явно използване за всяка метода, която връща данни Автоматично се прилага към всички методи
Връщан тип Име на изгледа (String), ModelAndView Данни (обекти, списъци и др.), автоматично сериализирани

Пример:

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