REST 아키텍처에서 가장 기본적인 개념은 바로 모든 리소스에 ID를 부여한다는 것이다. 웹 기반의 어플리케이션에서 리소스는 어플리케이션에서 제공하는 서비스가 될 것이고, 서버에 존재하는 수많은 서비스들을 식별하기 위한 ID는 URI가 될 것이므로 RESTful URI는 다음과 같은 사항들을 고려한 설계가 필요하다.
-
URI path가 계층 구조를 이루도록 설계
-
상위 path는 하위 path의 collection을 의미하도록 설계
예를 들면, '/movies/MV-00001'의 경우 'movies'와 movieId 값인 'MV-00001'은 계층 구조를 가지고, 상위의 'movies'는 하위 movieId의 collection을 의미하는 형태로 이루어진 RESTful URI이다.
URI Template은 '/movies/{movieId}'와 같이 하나 이상의 변수를 포함하고 있는 URI 형식의 문자열로, RESTful URI를 쉽게 만들고 관리할 수 있게 해준다.
DispatcherServlet URL 매핑
기존에 Spring MVC를 기반으로 개발된 웹 어플리케이션에서는 'xxx.do'라는 형태의 URL을 사용했지만, 위에서 설명했듯이 REST 스타일의 URL은 '/movies', '/movies/MV-00001/edit' 처럼 계층 구조로 사용가능하도록 설계되었다. 따라서 web.xml에 DispatcherServlet을 정의하고 매핑할 URL 패턴을 '/'로 지정해야한다. 이럴 경우 css 나 이미지 등 static 리소스 URL도 DispatcherServlet을 통하게 되어 화면이 정상적으로 동작하지 않는 문제가 있다. 그래서 Spring에서는 URLRewriteFilter라는 것을 이용하여 DispatcherServlet이 처리해야할 URL을 분리하고 있다.
그러나 Restweb Plugin의 경우 Foundation Plugin 등 다른 Plugine들과 함께 섞여서 동작해야하기 때문에 URLRewriteFilter를 사용하지 않고, 기존에 정의된 DispatcherServlet에 아래와 같이 매핑만 추가하도록 설정했다.
<servlet-mapping>
<servlet-name>action</servlet-name>
<url-pattern>/restweb/*</url-pattern>
</servlet-mapping>
URLRewriteFilter는 Apache 웹서버의 mod_rewrite와 같은 기능을 하는 것으로, Resin, Orion, Tomcat 등 어떤 J2EE 호환 웹 애플리케이션 서버에서도 사용할 수 있는 자바 웹 필터이다. 자세한 내용은 URLRewriteFilter 웹사이트를 참조하기 바란다.
'spring' 카테고리의 다른 글
XStream (0) | 2012.03.15 |
---|---|
XStream XML (0) | 2012.03.15 |
@Controller, @RequestMapping - Annotation in Spring(어노테이션을 사용한 컨트롤러 구현) (0) | 2012.03.15 |
@RequestMapping 어노테이션을 이용한 요청 매핑 설정 (0) | 2012.03.15 |
@PathVariable 사용한 url 매핑 (0) | 2012.03.15 |