Spring MVC URI 패턴 맵핑
Spring Web MVC
백기선님의 강의인 Spring Web MVC 강의를 듣고 공부한 내용을 정리한 글
URI 패턴 맵핑
여러개의 URI로 응답을 받고 싶은 경우
@RequestMapping({"/hello","/hi"})
? 사용해보기
@RequestMapping("/hello?")
?
는 어떠한 글자와도 매핑된다.
즉, /hello1
이나 /hellon
같이 매핑된다는 의미이다.
여러 글자
@RequestMapping("/hello/*")
여러 글자가 올 수 있다. 단 하나의 패스만 가능.
예시 : /hello/harry
, hello/babo
…
여러 패스
@RequestMapping("/hello/**")
여러 패스가 올 수 있다.
예시 : /hello/harry/hi
, /hello/1/2
…
정규 표현식으로도 맵핑 가능
@RequestMapping("/{name:[a-z]+}")
위의 경우 어떤 문자라도 올 수 있다.
패턴이 중복되는 경우에는?
@RequestMapping("/hello/**")
@RequestMapping("/hello/harry")
위와 같이 두개의 핸들러가 존재한다면 /hello/harry
로 호출하면 어디를 사용할까?
당연히 아래의 핸들러를 사용한다.
이는 스프링에서 핸들러를 결정할 때 가장 구체적인 핸들러를 선택한다.
확장자 요청
/hello/harry.json
이나 /hello/harry.zip
같이 URI에 파일을 요청하면 받을 수 있을까?
스프링 MVC에서는 확장자로 요청을 해도 요청을 받아준다.
그러나 Springboot에서는 확장자 요청을 기본적으로 막아둔다.
왜냐하면 이를 통해 발생하는 보안 이슈인 RTD Attack 때문이다. (RTD Attack에 관해서는 추후에 따로 다루도록 할 예정)
즉 Springboot에서는 보안 이슈가 발생할 수 있기 때문에 기본적으로 파일 요청을 막아두었다.
Reference
인프런 백기선님의 스프링 Web MVC