개발자 공부/🎀 스프링 공부
⭐️ 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