donaricano-btn

@RequestMapping 애노테이션과 URL 템플릿


- REST 에서는 URI로 웹상의 리소스를 특정한다

- URI 템플릿 형식으로 URL을 지정하려면 URL에서 변하는 부분을 {변수명}으로 지정


1. Example

1
2
3
@RequestMapping(value = "/user/{userId}", method=GET)
public String getUserById(
  @PathVariable("userId") int id, Model model....

- URL로서 /user/{userId}가 지정되어 있으므로 URL에 /user/{사용자 ID} 형식으로 들어오면 getUserById 메소드가 실행된다

- @PathVariable int userId 로 설정해도 동일하다

- 복수로 지정가능하다

1
2
3
4
5
@RequestMapping(value = "/company/{companyId}/dept/{depId}/user/{userId}", method=GET)
public String getUserById(
  @PathVariable("companyId") int companyId,
  @PathVariable("deptId") int deptId,
  @PathVariable("userId") int userId, Model model....
 

2. 특수 케이스

1) userId가 int형일때 /user/abc 요청을 보낸다면?

- 메소드에 매핑되지 않으며 404 error 발생

2) userId가 문자열이고 소문자만 받아들이고 싶다면?

- 스프링MVC의 URI 템플릿 기능에는 정규표현으로 변수를 제한하는 기능이 있다

- {변수명}:{정규표현}

1
2
3
4
@RequestMapping(value="/user/userId:[a-z]+}", method=GET)
public String getUserByStringId(
  @PathVariable("userId") String id,
  Model model....
 

3) 변수는 /(슬래시)사이에 하나만 둔다?

- 자유롭게 지정가능하다

1
@RequestMapping("/user/{companyId}-{depId}-{userId}
 

4) 지정할 수 없는 URL

- 세미콜론(;) 지정 할 수없다

- 스프링이 ; 뒤에 url은 삭제한다

- /user/id=123;pass=456-> /user/id=123 



블로그 이미지

리딩리드

,