[Spring] @RequestMapping 과 @Post/GetMapping 차이
@RequestMapping과
@Post/Get/DeleteMapping 등 각각의 메서드 Mapping 차이 알기
Mapping에는 다양한 메서드가 존재하지만,
설명의 간소화를 위해 PostMapping을 기준으로 차이점을 이야기 할 예정이다
결론부터 이야기 하자면 둘의 차이는 없다. 단지 작성 방식의 차이가 있을 뿐이다.
@RequestMapping과 @PostMapping의 각각의 형식은 아래와 같다
[@RequestMapping]
@RequestMapping(value = "/url", method = RequestMethod.POST)
: @RequestMapping의 경우에는 value로 경로를 작성하고, method 형식을 지정
: method를 지정해주지 않을 경우 GET/POST를 모두 처리 가능함
[@PostMapping]
@PostMapping("/url")
: @PostMapping의 경우 애너테이션 자체에서 method 형식이 지정되어 있으므로 경로만 지정
: 스프링 4.3 이후로 등장하였으며, @GetMapping/@PostMapping 뿐 아니라 @DeleteMapping/@PatchMapping도 등장
그렇다면 @PostMapping은 왜 나온 것일까??
1. method에 따른 URL 설정
@RequestMapping에서 method 형식이 지정되어 있지 않을 경우 GET/POST 방식을 모두 처리해 준다고 하였는데,
생략하고 작성할 경우에는 URL이 서로 달라야 한다는 점에 불편함이 있다.
@RequestMapping("/post")
@RequestMapping("/get")
코드의 간결성을 위해 위와 같이 method를 생략하고 작성이 가능하지만 각 url에 따른 기능이 다르기 때문에 url이 무조건 달라야 한다.
@PostMapping("/post")
@GetMapping("/post")
하지만 위의 경우 url이 동일하지만, method가 다르게 되기 때문에 코드의 간결성은 유지하면서 url 또한 자유롭게 설정이 가능하다.
2. 코드의 의미 파악
위에서 작성한 것처럼 @PostMapping / @GetMapping의 경우에는 해당 매핑이 어떤 것을 하고자 하는 것인지 명확하게 파악이 되지만, @RequestMapping의 경우 value, method를 따로 뒤에 작성하기 때문에 바로 파악하기에는 어려움이 있다.
코드를 간결하고 명확하게 사용하고 싶다면,
@GetMapping / @PostMapping / @DeleteMapping / @PatchMapping 를 사용해 보자!