⭐ URI 템플릿은 URI를 확인하기 전에 대체해야하는 매개 변수를 포함하는 URI를 지정하는 방법입니다.
웹 서핑을 하다보면,
가끔 url에 내 id처럼 남들과 중복되지 않는, 나만의 값이 포함되어 있는 경우를 만날 수 있습니다.
대충 이런 식으로 말이죠!
이런 값은 상황에 따라 다른 값을 가질 수 있는 가변적 요소입니다.
그렇다면 어떻게 가변적 요소가 url 안에 포함될 수 있는 것일까요?
웹 개발 실습을 진행하면서 페이지 간 이동을 개발했던 경험을 떠올려보면,
특정 페이지에서 다른 페이지로 이동할 때 개발자가 이동 url을 지정해주었던 것 같습니다.
<a href="main/login">LOG IN</a>
, <a href="main/logout">LOG OUT</a>
이런 식으로 말이죠.
당연히 그럴 수는 없습니다!
이것은 URI(URL)의 고정된 부분과 가변적인 부분을 분리하여 만들어놓은 URI Template이 있기 때문에 가능한 일 입니다.
먼저, uri는 웹페이지의 고유한 구분자입니다.
이러한 고유한 자원을 client만을 위해 더 정교한 uri로 구성하기 위해 가변적인 요소를 추가하는 것입니다.
예시로 아래 3가지 url이 있다고 가정해봅시다.
https://geesueshop.com/main/geesuee
https://geesueshop.com/main/jisubae
https://geesueshop.com/main/geesueebae
3가지 url은 마지막 사용자 id 부분을 제외하고는 고정된 값(https://geesueshop.com/main/
)을 가지고 있습니다.
그리고 마지막 사용자 id 부분은 접속 계정에 따라 다 다르고,
새로운 계정이 추가되면 새로운 id 값을 포함한 url이 필요하게 될 것입니다.
📍 URI Template 형식
http://ip:port/project/고정표현법/{가변표현법}
http://ip:port/project/고정표현법/{가변표현법}/고정표현법/{가변표현법}/....
위와 같은 형식으로 URI Template을 만들고,
해당 Template을 Controller 내부 메소드 상단 @RequestMapping()
의 parameter로 주면,
가변표현법 위치에 오는 값이 무엇이든 간에 URI Template를 확인하여 매핑된 controller 로직을 수행할 수 있습니다.
또한 @PathVariable
애노테이션을 사용하면,
가변표현법 자리에 들어가는 값을 변수로 받아와 메소드 내에서 사용할 수도 있습니다.
= 주소값의 일부를 데이터화
@RequestMapping("main/{userId}")
public String exampleMethod(@PathVariable String userId) {
System.out.println("exampleMethod() 실행 " + userId); //console에 가변적인 userId를 찍어 확인할 수 있음
return "nextPage.jsp";
}