RestController에 대해 알아보자

Posted by 돼지로운생활
2018. 12. 2. 01:00 개발자의 길/WEB

 Spring을 자주 사용하다보면 @Controller 라는 어노테이션을 아주 많이 보게 된다. 사실 Spring3 부터 @ResponseBody라는 어노테이션이 지원이 되기에, Rest 방식의 처리를 지원하고 있었는데 Spring4로 넘어오면서 @RestController라는 개념이 본격적으로 소개가 되었다.


RestController


 자 우선 REST라는 것에 대해 알아보도록 하자.


- REST는 Representational State Transfer의 약어로 하나의 URI는 하나의 고유한 리소스를 대표하도록 설계된다는 개념이다.


- REST 방식은 특정한 URI는 반드시 그에 상응하는 데이터 자체라는 것을 의미하는 방식이다.

예) /sample/TestPage는 어떠한 페이지가 아니라 TestPage라는 변수가 담고있는 Data라고 이해를 하면 될 것 같다.

즉, 

TestPage != TestPage.jsp   

TestPage == "이 페이지는 테스트 페이지입니다."

라는 뜻이 된다.


- REST API는 외부에서 위와 같은 방식으로 특정 URI를 통해서 사용자가 원하는 정보를 제공하는 방식이다.


1. RestController 소개

 앞서 말했지만 Spring4부터 @RestController라는 어노테이션이 지원이 되면서 이 어노테이션들은 JSP나 velocity같은 VIEW가 아니라 REST방식의 DATA 자체를 넘겨주는 것을 말한다.



  - 스프링 3에는 해당 메소드의 리턴 타입에 @ResponseBody 애노테이션을 추가하는 형태로 작성되었다.

  - 기능은 달라진것이 없지만, 컨트롤러 자체의 용도를 지정한다는 점에서 변화가 있다고 할 수 있다.

  - URI가 원하는 리소스를 의미한다.(복수형으로 작성)

  - URI에는 식별할 수 있는 데이터를 같이 전달하는 것이 일반적이다.


2. 예제

 RestController를 사용하면 어떠한 결과물이 나오는지 보도록 하자. 아주 간단하다.


1
2
3
4
5
6
7
8
@RestController
public class DemoApplication {
 
    @GetMapping("/testpage")
    public String root() {
        return "HELLO_WORLD";  
    }    
}
cs


자, 기본적으로 스프링에서 @Controller 어노테이션을 사용해 return을 HELLO_WORLD라고 했다면 기본적으로는 HELLO_WORLD.jsp(기본확장자 jsp라고가정)가 출력이 된다. 

그렇다면 결과는?



이렇게 된다. testpage를 호출하였지만 VIEW가 호출이 되는 것이 아니라 return Data인 HELLO_WORLD가 그대로 화면에 출력이 된다.


※ 여기서 잠깐! 

 - return 형식은 어떤 방식이던 상관이 없다 int, String, double, json, list<> 등등 다 넘겨줄 수 있다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
@RestController
public class DemoApplication {
 
 
    @GetMapping("/testpage")
    public List<Integer> root() {
        
        List<Integer> mlist = new ArrayList<Integer>();
        
        mlist.add(1);
        mlist.add(2);
        mlist.add(3);
        mlist.add(4);
    
        return mlist;
    }    
    
}
 
cs


위와 같은 방식으로 말이다.


3. REST & Ajax 

 그렇기 때문에 이 REST방식은 Ajax와 가장 많이 결합되어 사용된다. RestController용 JAVA를 따로 만들고 여기서는 데이터를 주고받는 기능만 하도록 하는 경우가 많다는 뜻이 된다.


※ @RestController가 어노테이션 되어있다면 백날천날 return에 JSP명을 써놔도 VIEW의 콜은 일어나지 않는다. 명심하자.


유용한 IT정보 / 전자제품 리뷰
포털에서 MilkyeWay를 검색해주세요👍
유용한 정보였다면 ❤️ 클릭 부탁드려요 😄

이 댓글을 비밀 댓글로