@RequestMapping 대신 @PostMapping @GetMapping 쓰는 이유가 궁금했다. 구글링으로 여러 블로그를 찾아봤지만 "코드가 줄어들기 때문"이라는 짤막한 답변이 대부분이었다.
@RequestMapping(value="경로", method=RequestMethod.GET)
@RequestMapping(value="경로", method=RequestMethod.POST)
이렇게 긴 코드가
@GetMapping("경로")
@PostMapping("경로")
이렇게 짧아진다는 설명이다.
틀린 말은 아니지만 이건 질문에 대한 답이 되긴 어렵다. 왜냐하면 @RequestMapping의 경우에도 method 부분을 생략하고
@RequestMapping("경로")
처럼 value만 명시해서 사용할 수도 있기 때문이다. 심지어 @RequestMapping은 method를 생략하면 GET 방식과 POST 방식을 모두 처리해준다. 어찌 보면 @RequestMapping만 쓰는 게 젤 편한 거다. 결국 @GetMapping과 @PostMapping을 사용하는 이유는 @RequestMapping에 굳이 method를 명시하는 이유와 같다고 볼 수 있다.
그럼 왜 굳이 method를 명시하는 것이고 그 연장선에서 @GetMapping과 @PostMapping이라는 어노테이션이 추가된 걸까. 좀더 자세히 알아본 결과를 기록한다.
url을 중복 사용할 수 있다
url 요청을 통해 메서드를 요청할 때 전송 방식을 명시하면 하나의 url로도 두 개 이상의 매핑을 처리할 수 있다. 예를 들어 /insertBoard라는 하나의 url로
@getMapping("/insertBoard")
@PostMapping("/insertBoard")
이렇게 두 개의 매핑이 가능하다. 만약 @RequestMapping("/insertBoard")으로 GET 방식의 요청을 받았다면 POST 방식의 요청은 다른 url을 써야한다. 이렇게 되면 보기에도 코드를 관리하기에도 좋지 못하다. 결론적으로 전송 방식을 명시하면 url을 경제적으로 사용할 수 있다.
코드에 의미 명시
코드만 봐도 어떤 전송 방식을 처리하는지 확인할 수 있는 장점이 있다. 통상적으로 GET의 경우 데이터를 화면에 뿌릴 때 많이 사용되고 POST는 전송한 데이터를 insert할 때 많이 사용된다. 전송 방식을 명시함으로써 코드의 로직을 좀더 쉽게 파악할 수 있다. 연장선에서 @PutMapping, @DeleteMapping, @PatchMapping을 사용한다고 이해해도 될 것 같다.
'기타' 카테고리의 다른 글
VSCode go live ip설정 (0) | 2023.07.10 |
---|---|
변수 var , let , const 차 (0) | 2023.07.10 |
Parameter / Argument 차이점 (0) | 2023.07.06 |
spring return "redirect:/주소"와 return "view이름" 차이 (0) | 2023.07.04 |
Spring Framework / Spring Boot 차이점? (0) | 2023.06.29 |