Mapping란 URL 호출할때 해당 클래스 혹은 메소드를 실행 하도록 매핑하는 용도로 사용 합니다.
Mapping의 종류는 @RequestMapping, @GetMapping, @PostMapping, @DeleteMapping, @PutMapping, @PatchMapping 가 있습니다.
그중에서 Request의 경우는 설정에 따라서 Get, Post, Put, Delete, Patch 등을 다 사용할 수 있습니다.
나머지 5가지 Mapping의 경우는 해당 용도로만 사용 가능합니다.
RequestMapping를 제외한 Mapping들은 Spring 4.3버전부터 추가 되었습니다.
아래는 RequestMapping의 사용 법 입니다.
1) HTTP 메소드 Mapping
특정 메소드 요청에 반응하도록 하려면 value에 URL을 설정하고 Method를 설정하면 됩니다.
EX) @RequestMapping(value = "/url_test", method = RequestMethod.GET)
EX) @RequestMapping(value = "/url_test", method = {RequestMethod.GET, RequestMethod.POST})
만약 Method를 설정하지 않으면 다 사용 가능합니다.
2) URL 다중 설정
EX) @RequestMapping(value = {"/url_test1", "/url_test2", "/url_test3"})
위와 같이 설정하면 다중으로 URL 설정이 가능합니다.
3) 클래스 단위에 설정
만약 클래스 단위에 설정하게 되면 해당 클래스에 접근하려면 그 URL도 추가하여 작성해야 합니다.
EX) Controller에 @RequestMapping("/info") 존재할 경우
@RequestMapping(value = "/url_test", method = RequestMethod.GET) 메소드를 호출 하려면
/info/url_test 로 호출해야 합니다.
4) HTTP 메소드에 조건 추가하여 Mapping
그중에서 첫번째로 파라미터 조건으로 매핑하는 방법 입니다.
EX) @RequestMapping(value = "/url_test", method = RequestMethod.GET, params = "name=test")
params 값이 다를 경우 400 bad_request를 반환 합니다.
두번째로 헤더 조건으로 매핑하는 방법 입니다.
EX) @RequestMapping(value = "/url_test", method = RequestMethod.GET, headers = "name=test")
세번째로 미디어 타입 조건으로 매핑하는 방법 입니다.(HTTP 요청 Content-Type, consume)
EX) @RequestMapping(value = "/url_test", method = RequestMethod.GET, consumes = "application/json")
consumes를 사용할때는 되도록이면 MediaType에 정해진걸로 쓰는게 좋습니다.
consumes값이 다를 경우 415 Unsupported Media Type를 반환 합니다.
네번째로 미디어 타입 조건으로 매핑하는 방법 입니다.(HTTP 요청 Accept, produce)
EX) @RequestMapping(value = "/url_test", method = RequestMethod.GET, produces = "text/html")
값이 맞지 않으면 HTTP 406 상태코드(Not Acceptable)를 반환한다
5) RequestMapping과 다른 Mapping의 차이점 및 사용하는 이유
RequestMapping의 경우 클래스 단위, 메소드 단위에서 사용이 가능합니다.
GetMapping, PostMapping 등은 클래스 단위에서는 사용 할 수 없고 메소드 단위에서만 사용 가능합니다.
6) 요약
RequestMapping의 경우 더 넓은 의미로 모든 요청 방식에 대응 할 수 있는 범용적인 어노테이션이고,
GetMapping, PostMapping 등은 각각의 요청에 대한 매핑을 간단하게 정의할 수 있는 특화된 어노테이션이라고 생각하면 될 것 같습니다.
최근 RequestMapping 대신 GetMapping, PostMapping을 사용하는 큰 이유는 가독성과 간결성을 위해서 라고 합니다.
'개발자 > 개발자 지식' 카테고리의 다른 글
| [Jaspersoft Studio] Group Header, Footer 사용하는법 (0) | 2024.12.31 |
|---|---|
| 서버 배포하는 법(MobaXterm 사용) (0) | 2024.12.30 |
| [자료구조]Stack(스택), Queue(큐) (0) | 2024.06.27 |
| 객체지향 프로그래밍 (0) | 2024.06.21 |
| 접근 제어자의 종류와 특성 (0) | 2024.06.20 |