유정잉

⭐️ Controller와 RestController의 차이점 본문

개발자 공부/🎀 스프링 공부

⭐️ Controller와 RestController의 차이점

유정♡ 2024. 5. 29. 12:10

@Controller와 @RestController는 둘 다 스프링 MVC 애플리케이션에서 사용되는 어노테이션으로, HTTP 요청을 처리하는 컨트롤러를 정의할 때 사용됩니다. 그러나 두 어노테이션은 약간의 차이가 있습니다.

 

[ @Controller ]

  • @Controller 어노테이션이 붙은 클래스는 전통적인 스프링 MVC의 컨트롤러로 간주됩니다.
  • 주로 HTML 뷰를 반환하는 데 사용됩니다.
  • 메서드가 String, ModelAndView, View 등과 같은 HTML 뷰를 반환하도록 정의될 수 있습니다.
  • 기본적으로 데이터를 JSON이나 XML 형식으로 반환하지 않습니다.
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;

@Controller
public class MyController {

    @GetMapping("/hello")
    public String hello() {
        return "hello"; // "hello"라는 뷰 이름을 반환
    }
}

 

위 코드에서 /hello 엔드포인트에 대한 요청을 처리하고, "hello"라는 뷰 이름을 반환하여 해당 뷰를 표시합니다.

 

 

 

[ @RestController ]

  • @RestController 어노테이션이 붙은 클래스는 RESTful 웹 서비스의 컨트롤러로 간주됩니다.
  • 주로 JSON 또는 XML 형식의 데이터를 반환하는 데 사용됩니다.
  • 메서드가 자바 객체를 반환하면 해당 객체는 HTTP 응답 본문에 직렬화되어 전송됩니다.
  • 기본적으로 데이터를 JSON 또는 XML 형식으로 반환합니다.
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class MyRestController {

    @GetMapping("/api/hello")
    public String hello() {
        return "Hello, World!"; // 문자열 데이터를 JSON 형식으로 반환
    }
}

 

위 코드에서 /api/hello 엔드포인트에 대한 요청을 처리하고, "Hello, World!"라는 문자열 데이터를 JSON 형식으로 반환합니다.

 

 

따라서, @Controller는 전통적인 스프링 MVC 컨트롤러로 HTML 뷰를 반환하는 데 사용되고,

           @RestController는 RESTful 웹 서비스의 컨트롤러로 JSON 또는 XML 형식의 데이터를 반환하는 데 사용됩니다.

728x90