Spring/Spring MVC

핸들러 URI 패턴

100win10 2020. 6. 2. 23:55

 

 

한 글자가 추가로 오는 경우

 

  • ?는 한문자를 나타내며 랜덤한 글자를 모두 맵핑하게 된다.

  • 따라서 다음과 같은 요청은 /hellos 지만 200응답이 나오게 된다.

여러 개의 글자가 추가로 오는 경우

 

  • * 를 붙여서 여러 개의 글자를 추가로 맵핑하게 된다.

 

  • 따라서 다음과 같은 테스트는 통과하게 된다.

 

  • 하나의 * 는 하나의 path(/)를 기준으로 하므로 다음과 같은 Test는 실패하게 된다.
  • 여러개의 path(/) 로도 허용하려면 *를 2개 붙여주면 된다.

 

핸들러 요청을 정규식으로 받아보기

 

 

  • 다음과 같이 정규식과 @PathVariable를 통해 URI Path에 들어있는  name을 받아올 수 있다.

  • 이제 name으로는 영문자만 허용하고 응답 본문으로 "hello seungyeol" 이 나오게 된다.

 

 


 

  • 다음과 같은 두개의 핸들러는 /hello/seungyeol 로 요청을 보낼시에 어떤 응답이 올까?

 

  • **도 가능하지만 조금 더 구체적인 "hello seungyeol"로 오게 된다.

 


스프링 부트의 URI 확장자 맵핑

 

  • 스프링 부트는 기본적으로 .json, .xml, .zip 등의 핸들러 맵핑을 사용할 수 없도록 해놓았다.

 

  • 그 이유는 예를 들어 .zip이라면 압축 파일 인줄 알고 다운 받게 된다.
  • 이를 이용한 RFD attack으로 인하여 보안 이슈가 발생하게 된다. 
  • 따라서 스프링 부트는 이런 기본 확장자 맵핑을 막아놓았다.

 

  • 이전에는 URI 확장자를 보고 원하는 요청을 판단했지만
  • 요즘은 어떤 타입을 원한다고 요청을 할때에 Accept 헤더에 설정하게 된다.
  • 혹은 요청 파라미터를(?type=123) 쓰는 경우도 있다.