본문 바로가기

Programming/Java & JSP & Spring

[Spring] RestController와 Ajax

RestController에 대해서 알아보려면 먼저 REST방식이 무엇인지 알아야한다.


REST란?

REST는 'Representational State Transfer' 의 약어로 하나의 URI는 하나의 고유한 Resource를 대표하도록

설계된다는 개념이다.

이 말은 다른 말로 'URI와 HTTP메소드를 이용해 객체화된 서비스에 접근한다고 말하는 것'이 라고 말할 수도 있는데

이 편이 더 쉽게 이해할 수도 있다.


REST API는 외부에서 특정 URI를 통해서 사용자가 원하는 정보를 제공하는 방식이다.

최근에 Open API에서 많이 사용되면서 REST 방식을 제공되는 외부 연결 URI를 REST API라고 하고,

REST 방식의 서비스 제공이 가능한 것을 'Restful' 하다고 표현한다.


REST 특징

  • Stateless : REST의 가장 큰 강점 중 하나이다. 이전, 이후의 대한 직접적인 정보가 필요없이 직관적인 오브젝트에의 접근으로 서비스를 처리한다. 쿠키/세션이 필요없다.
  • URI를 이용 : REST는 모든 유일한 객체에 대해 유일하고 직관적인 URI을 통해 접근하도록 한다.
  • HTTP 메소드를 사용 : REST는 HTTP에서 제공하는 GET, PUT, POST, DELETE 4개의 메소드를 이용해서 서비스를 제공한다. 이것이 REST의 단점이 되기도 하는데, 4개의 메소드가 DB의 CRUD와 같은 기능을 하므로 이러한 유형이 아닌 작업에 대해서는 어떻게 처리해야되는지 모호한 부분이다.

@RestController
스프링에서 Restful하게 작성하기 위해서는 @Controller 내에서 @ResponseBody를 사용하는 것과
@RestController을 사용하는 방법이 있다.
스프링은 3버전부터 @ResponseBody 애노테이션을 지원하면서 본격적으로 REST 방식의 처리를 지원하였다.
스프링 4에 들어와서 @RestController가 본격적으로 소개되었다.
스프링 4버전부터 지원되는 '@RestController' 애노테이션의 경우 기존의 특정한 JSP와 같은 뷰를 만들어
내는 것이 목적이 아닌 REST방식의 데이터 처리를 위해서 사용되는 애노테이션이다.

@Controller vs @RestController
스프링 MVC의 컨트롤러와 Restful 웹 서비스 컨트롤러의 주요 차이점은 HTTP 응답 바디가 생성되는 방식이다.
스프링 MVC 컨트롤러의 경우 View 기술을 사용하지만, Restful 웹 서비스 컨트롤러는 객체를 반환하기만 하면
객체 데이터는 JSON/XML형식의 HTTP응답에 직접 작성하게 된다.
따라서 REST방식을 사용하기위해 @Controller의 경우 컨트롤러 클래스의 각 메소드에는 
@ResponseBody 애노테이션이 있어야한다.
그에 반해 @RestController는 @Controller, @ResponseBody를 합쳐놓은 것 이상의 역할을 한다.
컨트롤러 클래스에 @RestController 애노테이션을 작성함으로써 더 이상 각 메소드 @ResponseBody
애노테이션을 작성할 필요가 없게 된다.

정리해보면
@RestController는 View가 필요없는 REST방식에서 주로 사용되고 @ResponseBody를 포함하고 있다.
@Controller는 View와 REST방식을 동시에 사용가능하지만 REST방식은 @ResponseBody를 사용해야한다.

REST와 Ajax
웹을 통해서 작업할 때 REST방식이 가장 많이 쓰이는 형태는 Ajax와 같이 결합된 형태이다.
Ajax는 'Asynchronous JavaScript and XML' 의 약어로 비동기화된 자바스크립트와 XML이라는 뜻이다.
주로 브라우저에서 대화형으로 서버와 데이터를 주고 받는 형태의 메시지 전송 방식을 적용할 때 사용된다.

Ajax를 쉽게 말하자면 웹페이지의 전환없이 서버에서 데이터를 받는 방법이라고 할 수 있다.
구글의 지도나 포털사이트의 자동완성 기능들이 Ajax를 활용한 가장 대표적인 서비스라고 할 수 있다.

REST 방식이 데이터를 호출하고 사용하는 방식을 의미한다면 Ajax는 실제로 그를 이용하는
수단에 가깝다고 볼 수 있다.









※ 참조 : http://egloos.zum.com/killins/v/3092502
    http://highcode.tistory.com/24

              코드로 배우는 스프링 웹프로젝트



'Programming > Java & JSP & Spring' 카테고리의 다른 글

[Spring] AOP, Filter, Interceptor의 차이  (0) 2017.02.01
[Spring] AOP 란?  (0) 2017.02.01
jQuery와 DOM  (0) 2017.02.01
BootStrap (부트스트랩) 이란?  (1) 2017.01.31
[Spring] MyBatis의 #{ } 문법  (0) 2017.01.31