728x90

 

 

요청이 들어오면 특정 메서드와 요청하기 위해 사용하는 것이 @RequestMapping이다.

@RequestMapping에서 가장 많이 사용하는 것은 valuemethod 이다.

  • 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