반응형

@RequestMapping 어노테이션은 라우팅에 관한 정보를 제공합니다.

클래스 또는 메소드 레벨에서 사용할 수 있고, 이를 웹 request와 매핑하는 역할을 합니다.

RequestMapping annotation paramter image

사용할 수 있는 파라미터와 default 값은 위와 같습니다.

@RequestMapping(value = "/test")
public String test() {
    ...
}

위와 같은 형태로 사용할 때, /test에 접속하면 GET 방식으로 요청합니다.

 

@RequestMapping(value = {"/test1", "/test2"})
public String test() {
    ...
}

위처럼 두 가지 형태로도 접속할 수 있습니다. /test1 또는 /test2로 접속하면 test() 메소드가 호출됩니다.

 

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

method parameter로 접속 방식을 선택할 수 있습니다.

위처럼 사용하면 GET 또는 POST 방식으로 요청했을 때 test() 메소드가 호출됩니다.

 

@RequestMapping(value = "/test/{temp1}")
public String test(@PathVariable("temp1") String temp1, @RequestParam("temp2") String temp2) {
    // test/hihi?temp2=byebye 요청
    System.out.println("temp1 = " + temp1); // output : temp1 = hihi
    System.out.println("temp2 = " + temp2); // output : temp2 = byebye
    ...
}

위와 같이 URI에 파라미터를 줄 수 있습니다.

 

// reqVal이 "myVal"이면 호출
@RequestMapping(value = "/test", params={"reqVal=myVal"})
public String test(@RequestParam("reqVal") String reqVal) {
    ...
}

// reqVal이 "myVal"이 아니면 호출
@RequestMapping(value = "/test", params={"reqVal!=myVal"})
public String test(@RequestParam("reqVal") String reqVal) {
    ...
}

// 파라미터에 reqVal이 있으면 호출
@RequestMapping(value = "/test", params={"reqVal"})
public String test(@RequestParam("reqVal") String reqVal) {
    ...
}

// 파라미터에 reqVal이 없으면 호출
@RequestMapping(value = "/test", params={"!reqVal"})
public String test(@RequestParam("reqVal") String reqVal) {
    ...
}

파라미터의 값을 통해서도 요청을 구분할 수 있습니다.

위의 첫 번째 예시에서는 reqVal == myVal이어야 test method가 호출됩니다.

 

@RequestMapping(value = "/test", headers = "content-type=text/*")
public String test() {
    ...
}

위처럼 헤더값으로도 구분할 수 있습니다. "content-type"이 "text/*"면 요청을 받을 수 있습니다.

 

@RequestMapping(value = "/test", produces = "text/plain")
public String test() {
    ...
}

produces의 값으로 명시한 타입이 accept header에 포함되면 요청을 받을 수 있습니다. 해당 타입으로 응답됩니다.

 

@RequestMapping(value = "/test", consumes = {"text/plain", "application/*"})
public String test() {
    ...
}

consumes의 값으로 명시한 타입이 content-type header에 포함되면 요청을 받을 수 있습니다.

반응형

+ Recent posts