우리는 특정 uri로 요청을 보내면 Controller에서 어떠한 방식으로 처리할지 정의를 한다.
이때 들어온 요청을 특정 메서드와 매핑하기 위해 사용하는 것이 @RequestMapping이다.
@RequestMapping에서 가장 많이사용하는 부분은 value와 method이다. (더 많지만 여기서는 여기까지만)
value는 요청받을 url을 설정하게 된다.
method는 어떤 요청으로 받을지 정의하게 된다.(GET, POST, PUT, DELETE 등)
@RequestMapping(value = "/hello", method = RequestMethod.GET)
예시를 간단하게 들어보면 이런식으로 가능하다.
그런데 만약 /hello라는 내용으로 GET, POST, PUT, DELETE를 만들려면 어떻게 해야할까?
@RestController
public class HelloController {
@RequestMapping(value = "/hello", method = RequestMethod.GET)
public String helloGet(...) {
...
}
@RequestMapping(value = "/hello", method = RequestMethod.POST)
public String helloPost(...) {
...
}
@RequestMapping(value = "/hello", method = RequestMethod.PUT)
public String helloPut(...) {
...
}
@RequestMapping(value = "/hello", method = RequestMethod.DELETE)
public String helloDelete(...) {
...
}
}
이런식으로도 만들 수 있다.
그렇지만 불편하다는 생각이 든다.
그리고 선배들은 역시나 이러한 내용을 해결하기 위해 아래와 같은 해결방식을 만들어 주셨다.
@RestController
@RequestMapping(value = "/hello")
public class HelloController {
@GetMapping()
public String helloGet(...) {
...
}
@PostMapping()
public String helloPost(...) {
...
}
@PutMapping()
public String helloPut(...) {
...
}
@DeleteMapping()
public String helloDelete(...) {
...
}
}
공통적인 url은 class에 @RequestMapping으로 설정을 해주었다.
그리고 @GetMapping, @PostMapping, @PutMapping, @DeleteMapping으로 간단하게 생략이 가능해졌다.
뒤에 추가적으로 url을 붙이고 싶다면 @GetMapping, @PostMapping, @PutMapping, @DeleteMapping 에 추가적인 url을 작성하면 된다.
@RestController
@RequestMapping(value = "/hello")
public class HelloController {
@GetMapping("/hi")
public String helloGetHi(...) {
...
}
}
위에있는 helloGetHi에 들어가기 위해서는 /hello/hi로 들어가야 한다.
추가적인 내용으로 @RequestMapping은 Class와 Method에 붙일 수 있고 @GetMapping, @PostMapping, @PutMapping, @DeleteMapping들은 Method에만 붙일 수 있다.
출처 : https://docs.spring.io/spring-framework/docs/current/reference/html/web.html#mvc-ann-requestmapping
'프레임워크 > Spring' 카테고리의 다른 글
[Spring] Header에서 데이터 가져오기 @RequestHeader (0) | 2021.04.23 |
---|---|
[Spring] Parameter에서 데이터 가져오기 @RequestParam (0) | 2021.04.22 |
[Spring] consumes와 produces의 차이 (1) | 2021.04.21 |
[Spring] URI patterns는 무엇인가? (0) | 2021.04.20 |
[Spring] @Controller와 @RestController의 차이 (0) | 2021.04.07 |
댓글