@PathVariable Annotation을 이용한 URI 템플릿
RESTful 서비스가 유행하면서 URI를 다음과 같이 REST 방식으로 구성하는 경우가 늘어나고 있다.
기존에는 http://로컬호스트주소/users/userinfo?id=madvirus와 같이 파라미터를 이용해서 아이디나 이름을 전달받았다면, 이제는 URI에 아이디나 이름 등이 포함되도록 URL을 구성하고 있다.
SPRING 3버전에 추가된 기능 중 필자가 가장 반기는 기능 중의 하나가 URI 템플릿이며, 이 URI 템플릿을 이용하면 REST 방식의 URL 매칭을 쉽게 처리할 수 있다. URI 템플릿을 사용하는 방법은 매우 간단하며, 다음과 같이 두 가지만 추가로 작업해주면 된다.
- @RequestMapping Annotation의 값으로 {템플릿변수}를 사용한다.
- @PathVariable Annotation을 이용해서 {템플릿변수}와 동일한 이름을 갖는 파라미터를 추가한다.

@RequestMapping Annotation은 이름이 userId와 characterId인 변수를 포함하고 있다. 이들 변수는 @PathVariable Annotation이 적용된 동일한 이름을 갖는 파라미터에 매칭된다. 따라서 요청 URI가 "/game/users/madvirus/character/1"이면, characterInfo() 메서드의 userId 파라미터와 characterId 파라미터의 값은 각각 "madvirus"와 "1"이 된다.
만약, 파라미터 이름과 URI 템플릿의 변수 이름이 동일하지 않다면, 다음과 같이 @PathVariable Annotation에 매칭될 템플릿 변수 이름을 지정해 주면 된다.
public String characterInfo(@PathVariable String userId, @PathVariable int characterId, ModelMap model) {
...
}
@RequestMapping Annotation을 Class와 메서드에 함께 적용할 경우, 메서드에 적용한 @RequestMapping Annotation의 값은 Class에 적용한 @RequestMapping Annotation의 값을 기본 경로로 사용하게 된다. 위에 Code는 사용 예이다.
위 Code에서 characterInfo() 메서드에 적용된 @RequestMapping Annotation의 값은 "/characters/{characterId}"인데, 실제로 매칭되는 값은 Class에 적용된 @RequestMapping Annotation의 값을 포함한 "/game/users/{userId}/characters/{chracterId}"가 된다.
출력결과:

'Java > SPRING' 카테고리의 다른 글
스프링 프레임워크 [Spring Framework] MVC 패턴중 VIEW 영역 (0) | 2021.12.27 |
---|---|
스프링 프레임워크 [Sprng Framework] Validator Interface를 이용한 폼 값 검증 (0) | 2021.12.23 |
스프링 프레임워크 [Spring Fremawork] 요청 URI 매칭 (0) | 2021.12.23 |
스프링 프레임워크 [Spring Framework] Controller(컨트롤러) 메서드의 리턴 타입 (0) | 2021.12.23 |
스프링 프레임워크 [Spring Framework] Servlet API (0) | 2021.12.23 |