출처 : https://mungto.tistory.com/436
우리는 특정 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에만 붙일 수 있다.
'STUDY > SpringLegacy' 카테고리의 다른 글
[Spring] SqlSession, SqlSessionDaoSupport (0) | 2023.05.24 |
---|---|
[Spring] RestTemplate (0) | 2023.04.19 |
[Spring] @RequestBody @ResponseBody 어노테이션과 @RestController (0) | 2023.04.19 |
[Spring] RestTemplate 한글 깨짐 (0) | 2023.04.18 |
[SPRING] Tiles framework (0) | 2022.12.27 |