본문 바로가기
Web/Spring Boot

Spring Boot - @Controller 와 @RestController 의 차이점

by 주남2 2023. 8. 29.
반응형

@Controller 와 @RestController 의 차이점에 대해 알아보겠습니다.

요즘은 프론트앤드로 React, Vue, Svelte 등을 사용하기 때문에 Controller 보다는 RestController 를 더 사용할 것 같습니다.

이들은 HTTP 요청을 처리하는 클래스를 정의하는 데 사용됩니다.

 

@Controller 

@Controller 어노테이션은 스프링 MVC에서 컨트롤러를 정의하는 데 사용됩니다. 

@Controller가 붙은 클래스는 보통 View를 반환합니다. HTML 파일을 사용하거나, JSP 등을 사용할 때 주로 쓰게 됩니다.

@Controller
public class TestController {
    @RequestMapping("/")
    public String index() {
        return "index"; // View 이름을 반환합니다.
    }
}

위 코드에서 MyController 클래스에 있는 index 메서드가 "/" 경로로 들어오는 HTTP 요청을 처리하게 됩니다. 

그리고 "index"라는 이름의 View(예: JSP 파일)를 반환하게 됩니다.

 

@RestController 

@RestController 어노테이션은 @Controller와 비슷하지만, 이 어노테이션은 주로 RESTful (Get, Post, Put, Delete) 컨트롤러를 만드는 데 사용됩니다. 

 

@RestController가 붙은 클래스의 메서드들은 기본적으로 HTTP 응답 본문(Body)에 직접 쓰여집니다. 

따라서 주로 데이터 자체(JSON, XML 등)를 반환하는데 사용됩니다.

 

프론트앤드 프레임워크를 사용할 때 사용할 탠데, React 등에서 Fetching 을 통해 요청한 정보들을 JSON 형태로 반환하고 이를 이용하여 데이터를 화면에 보여주게 됩니다.

 

@RestController
public class TestRestController {
    @RequestMapping("/hello")
    public String hello() {
        return "Hello World"; // 문자열이 HTTP 응답 본문에 직접 쓰여집니다.
    }
}

위 코드에서 MyRestController 클래스에 있는 hello 메서드가 "/hello" 경로로 들어오는 HTTP 요청을 처리하게 되고, "Hello World"라는 문자열을 HTTP 응답 본문으로 직접 반환하게 됩니다.

반응형