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



© 2022. by minkuk

Powered by minkuk