728x90
요청이 들어오면 특정 메서드와 요청하기 위해 사용하는 것이 @RequestMapping이다.
@RequestMapping에서 가장 많이 사용하는 것은 value와 method 이다.
- value는 요청 받을 url을 설정할 수 있다.
- method는 어떤 요청을 받을지 정의한다.(GET,POST,DELETE,PUT,PATCH 등 )
/v1 url로 매핑하는 예제
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
|
@RestController
public class ControllerV1 {
@RequestMapping(value = "/v1", method = RequestMethod.GET)
public String getMapping(...) {
...
}
@RequestMapping(value = "/v1", method = RequestMethod.POST)
public String postMapping(...) {
...
}
@RequestMapping(value = "/v1", method = RequestMethod.PUT)
public String putMapping(...) {
...
}
@RequestMapping(value = "/v1", method = RequestMethod.DELETE)
public String deleteMapping(...) {
...
}
@RequestMapping(value = "/v1", method = RequestMethod.PATCH)
public String patchMapping(...) {
...
}
}
|
cs |
이렇게 /v1 GET,POST,DELETE,PUT,PATCH 으로 만들수 있다.
그러나 눈에 확 들어오지 않고 조금 반복적인 코드가 많이 발생한다.
조금 더 효율적이고 간단한 코드를 한번 보자
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
|
@RestController
public class ControllerV1 {
@GetMapping("/v1")
public String getMapping(...) {
...
}
@PostMapping("/v1")
public String postMapping(...) {
...
}
@PutMapping("/v1")
public String putMapping(...) {
...
}
@DeleteMapping("/v1")
public String deleteMapping(...) {
...
}
@PatchtMapping("/v1")
public String patchMapping(...) {
...
}
}
|
cs |
이렇게 바꿀수 있다. 확실히 전 코드 보다는 간략하고 눈에 더 잘들어 온다.
그러나 여기서 보면 "/v1"이 중복되는걸 조금 수정하고 싶어진다.
클래스 레벨에서 중복되는 url주소를 적으면 중복되는 코드를 조금이나마 줄일수 있다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
|
@RestController
@RequestMapping("/v1")
public class ControllerV1 {
@GetMapping("/cont")
public String getMapping(...) {
...
}
@PostMapping
public String postMapping(...) {
...
}
@PutMapping
public String putMapping(...) {
...
}
@DeleteMapping
public String deleteMapping(...) {
...
}
@PatchtMapping
public String patchMapping(...) {
...
}
}
|
cs |
이런식으로 클래스 레벨에 등록하면 중복되는 url경로도 줄일 수 있다.
그리고 GetMapping에 보면 ("/cont")가 있다. 그렇다면 이 경로는 "/v1/cont"로 요청된다.
@RequestMapping은 클래스와 메소드에 붙일 수 있고, @GetMapiing,@PostMapping,@PutMapping,@DeleteMapping,@PatchMapping은 메소드에만 붙일 수 있고 클래스 레벨에는 붙일 수 없다.
이런식으로 어노테이션으로 중복되는 코드를 줄이고 효율적인 코드를 작성 할 수 있다.
728x90
'Dev > Spring' 카테고리의 다른 글
Spring REST Docs (0) | 2021.08.23 |
---|---|
DAO,DTO,Entity Class (0) | 2021.08.13 |
[Spring]@RestController 와 @Controller의 차이 (0) | 2021.07.18 |
로깅(Logging) (0) | 2021.07.13 |
[Spring]다양한 의존관계 주입 방법 (0) | 2021.06.25 |