SPRING/스프링 MVC

HTTP 요청 맵핑하기 2부: URI 패턴 맵핑

JUMP개발자 2021. 6. 20. 16:10

요청 식별자로 맵핑하기 

- @RequestMapping은 다음의 패턴을 지원합니다. 

- ?: 한 글자 (“/author/???” => “/author/123”) 

- *: 여러 글자 (“/author/*” => “/author/keesun”) 

- **: 여러 패스 (“/author/** => “/author/keesun/book”)

 

@Controller
public class SampleController {

    @RequestMapping(value = "/hello", method = {RequestMethod.GET})
    @ResponseBody
    public String hello() {
        return "hello";
    }

    @RequestMapping(value="/hello/?")
    @ResponseBody
    public String hello2() {
        return "hello?";
    }

    @RequestMapping(value="/hello/*")
    @ResponseBody
    public String hello3() {
        return "hello*";
    }

    @RequestMapping(value="/hello/**")
    @ResponseBody
    public String hello4() {
        return "hello**";
    }


}

 

 

클래스에 선언한 @RequestMapping과 조합 

- 클래스에 선언한 URI 패턴뒤에 이어 붙여서 맵핑합니다.

 

@Controller
@RequestMapping(value = "/hi")
public class SampleController2 {
@RequestMapping(value = "", method = {RequestMethod.GET})

    @ResponseBody
    public String hello() {
        return "hi";
    }

    @RequestMapping(value="/?")
    @ResponseBody
    public String hello2() {
        return "hi?";
    }

   @RequestMapping("/{name:[a-z]+}")
   // 정규식에 해당하는 패턴을 name으로 받는다.
   @ResponseBody
   public String hello(@PathVariable String name) {
   return "hello " + name;
   }
}

정규 표현식으로 맵핑할 수도 있습니다. 

- /{name:정규식}

 

 

패턴이 중복되는 경우에는? 

- 가장 구체적으로 맵핑되는 핸들러를 선택합니다.

 

URI 확장자 맵핑 지원 

● 이 기능은 권장하지 않습니다.

(스프링 부트에서는 기본으로 이 기능을 사용하지 않도록 설정 해 줌)

- 보안 이슈 (RFD Attack) 

- URI 변수, Path 매개변수, URI 인코딩을 사용할 때 할 때 불명확 함.