요청이 왔을 때 어떤 컨트롤러가 호출이 되는지 매핑하는 방법입니다.
단순하게 URL로 매핑하는 것 뿐만 아니라 여러가지 요소를 조합해서 매핑을 합니다.
basic에다가 requestmapping 패키지를 만들고 MappingController클래스를 만듭니다.
package hello.springmvc.basic.requestmapping;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController //...1
public class MappingController {
private Logger log = LoggerFactory.getLogger(getClass());
@RequestMapping("hello-basic") //...2
public String helloBasic() {
log.info("helloBasic");
return "ok";
}
}
앞에서 설명했지만 한번 더
@RestController
@Controller 는 반환 값이 String 이면 뷰 이름으로 인식됩니다. 그래서 뷰를 찾고 뷰가 랜더링 됩니다.
@RestController 는 반환 값으로 뷰를 찾는 것이 아니라, HTTP 메시지 바디에 바로 입력합니다.
따라서 실행 결과로 ok 메세지를 받을 수 있습니다. @ResponseBody 와 관련이 있는데, 뒤에서 더 자세히 설명합니다.
→ @ResponseBody 자세히
@RequestMapping("/hello-basic")
/hello-basic URL 호출이 오면 이 메서드가 실행되도록 매핑합니다.
대부분의 속성을 배열[] 로 제공하므로 다중 설정이 가능합니다.
@RequestMapping({"/hello-basic", "/hello-go"})
<aside> ❗ 둘다 허용
다음 두가지 요청은 다른 URL이지만, 스프링은 다음 URL 요청들을 같은 요청으로 매핑합니다.
@RequestMapping 에 method 속성으로 HTTP 메서드를 지정하지 않으면 HTTP 메서드와 무관하게 호출됩니다.
모두 허용 GET, HEAD, POST, PUT, PATCH, DELETE
→ 참고