일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 30 | 31 |
- NooBLoL
- mybatis
- 네이버클라우드
- Database
- spring
- ncloud
- NaverCloudPlatform
- F-Lab
- Naver Cloud
- DBDocs
- Naver Cloud Platform
- Enum
- NCP
- 에프랩
- 회고
- React
- OrientalUnity
- ngrinder
- docker
- 네이버 클라우드
- Java
- Pinpoint
- object storage
- Scheduler
- AssertJ
- spring boot
- navercloud
- Thymeleaf
- junit
- papago
- Today
- Total
DevJong12
[Refactor]기능에 대해 Mapping과 URL을 통한 정리 본문
개요
프로젝트를 진행하면서 기존에는 @PostMapping
과 @GetMapping
에 대해서만 사용을 했었다.
그러다보니 대부분의 Mapping
을 셋팅 할 때 URL을 남겨줘야 하는 문제가 있었고, /
만 선언을 하는경우는 거의 없었다.
이후, 회원정보의 수정기능에 대해서 제작을 하면서 다음과 같이 Controller
영역에 대해서 개발을 진행했었다
//기존의 소스
@PostMapping("/user/update")
public ResponseDto userUpdate(@Valid @RequestBody UserInfoUpdateDto userInfoUpdateDto) {
return userInfoService.updateUserInfo(userInfoUpdateDto);
}
다음과 같이 Mapping
을 셋팅했었고, 다음과 같은 리뷰를 받게되었다.
해당 리뷰를 받은 이후, Mapping
의 종류에 대해서, URL
을 작성하는 전략에 대해서 생각을 해보게 되었다.
Mapping전략
기본적으로 내 프로젝트는 간단한 CRUD가 들어가는 경우가 많았다.
그러다보니 간단하게 기능을 분류하기가 쉬운편이었고, Mapping에서도 그걸 표현하기 쉽게 구분된 Mapping이 있는걸 알게 되었다.
일단 크게 4가지의 Mapping만을 사용하기로 마음을 먹었고, @GetMapping
, @PostMapping
, @PutMapping
, @DeleteMapping
을 사용하고자 하였다.
@GetMapping
: 데이터의 조회가 주 기능인 경우@PostMapping
: 데이터를 삽입이 주 기능인 경우@PutMapping
: 데이터의 수정이 주 기능인 경우@DeleteMapping
: 데이터의 삭제가 주 기능인 경우
크게 4가지로 분류를 하였으며, DeleteMapping
의 경우 실제로는 Data를 삭제하지 않는 경우도 있지만 그럼에도 Delete를 사용하였다.
그럼에도 Delete를 사용한 이유는
URL과의 매칭을 봤을 때 수정이라고 하면 이게 정보수정인지? 삭제기능이 주된건지? 혼돈이 올 수 있다는 생각을 하였다.
그렇기 떄문에 실제로는 데이터를 수정한다 해도, 목적이 삭제처럼 되는 경우기 떄문에 Delete를 사용하였다.
Ps. @PutMapping
은 멱등성이 있고~하는 문제는 일단 우선순위는 아니었다.. 추후 해당 부분에 대해서는 추가적으로 공부를 하고자 한다.
URL전략?
경로의 경우에는 대부분 /
를 줬다, 예외로 조회를 하는 경우 /list
등의 추가적인 표시를 해주는 정도로 표현을 하기 시작했다.
나는 /
한개의 경로만 사용했지만, 해당 경로로 4개의 기능을 분류할 수 있는 용이함이 생겨서 명칭을 정하는데 많이 편해지게 되었다.
변경이후 코드는?
Mapping과 URL을 분류하는 작업을 하게된 계기의 소스코드와는 다른 코드지만 아래의 이미지와 같은 방식으로 URL을 변경 할 수있게 되었다.
기존이었으면 등록이나 수정이나 삭제 전부 @PostMapping
을 사용한 이후 /update
나 /insert
혹은 /add
등의 문구를 적었을 테지만, 이후에는 대부분 루트경로만 사용하게 되었다.
혹시 URL의 명칭을 짓는데 고민이 있는 사람이라면 Mapping으로 분류해보는 건 어떨가 싶다.
'프로젝트 > NoobLoL' 카테고리의 다른 글
[Issue] 개발서버 ScaleUp기록 (0) | 2022.10.21 |
---|---|
[Issue] MyBatis에서의 Enum활용기 - 2편 (0) | 2022.10.14 |
[NCP]FTP의 연결방법 (0) | 2022.10.07 |
[refactor]MyBatis에서의 Enum활용기 (By.boolean) - 1편 (1) | 2022.09.30 |
[Issue]Static주소를 입력시 발생하는 No Handler Exception (0) | 2022.09.21 |