반응형
CRUD를 최대한 지키면서 코드를 개발하다보니, 새로운 리소스를 생성하는 POST와 리소스를 수정 혹은 대체하는 PUT, PATCH의 차이에 대해서 의문점이 들었다.
여러 서비스 기업의 기술 블로그를 읽던 중 가장 직관적으로 이해가 잘 되는 피드페이지를 공유한다.
https://www.tosspayments.com/blog/articles/dev-1
멱등성이 뭔가요?
생소한 표현이지만 알고 보면 쉬워요. 컴퓨터 과학에서 멱등하다는 것은 첫 번째 수행을 한 뒤 여러 차례 적용해도 결과를 변경시키지 않는 작업 또는 기능의 속성을 뜻해요. 즉, 멱등한 작업의
www.tosspayments.com
결국엔 멱등성 이라는 이 키워드가 핵심이었다.
" 첫 번째 수행을 한 뒤 여러 차례 적용해도 결과를 변경시키지 않는 작업 또는 기능의 속성 "
여러번 요청 작업이 있어도 결과가 그대로 유지되어있는가, 변경되는가의 차이에 따라 PUT과 PATCH를 사용하는 출발점이 달라진다.
- Postmapping
- 새로운 리소스를 생성할 때 사용
- 멱등성을 가지지 않는다. -> 같은 요청을 여러 번 수행하면 동일한 리소스의 여러 복사본이 생성되기 때문이다.
- Putmapping
- 리소스 전체 업데이트를 위해서 사용
- 클라이언트가 리소스의 완전한 새 버전을 제공하고, 기존의 리소스가 대체되는 작업일 때 활용한다
- 멱등성을 가진다 -> 여러 번 동일한 요청에도 기존의 리소스가 대체될 뿐, 새로운 리소스가 그대로 유지되기 때문이다.
- 활용 예시 -> 사용자 프로필 정보를 업데이트할 때, 이름,전화번호,이메일 등 모든 정보를 포함해서 생성할 때
- Patchmapping
- 리소스 일부를 업데이트하기 위해서 사용
- 클라이언트는 변경하고자 하는 리소스의 일부 필드만 요청하고, 리소스의 다른 부분은 영향을 받지 않는다.
- 멱등성을 보장하지 않는다. -> 같은 PATCH 요청을 여러 번 수행할 경우, 결과가 매번 달라진다.
- 활용 예시 -> 닉네임만 수정하기와 같은 작업 요청을 할 때
코드 개발하다가 의문점이 들었던 부분은 해소가 되었다. 푸시 알림을 설정할지, 해제할지 요청 API를 작성중이었는데, POST 요청은 아닌 것 같고, PUT인가 PATCH인가에 대해서 모호성을 느끼던 순간이 있었고, 이 기회에 확실하게 개념을 잡을 수 있었던 것 같다.
반응형
'Backend' 카테고리의 다른 글
| [ IntelliJ ] Springboot 초기설정 - 빌드 방식 차이점 (0) | 2024.05.10 |
|---|---|
| [Springboot] List 순회 도중 ConcurrentModificationException 발생 (1) | 2024.04.21 |
| [Spring Security] 카카오 Auth2.0 기반 인증인가 프로세스 적용 (0) | 2024.03.28 |
| [Spring Security] 시큐리티 프로세스 총정리 (3) | 2024.02.27 |
| [Spring Security] FilterChain, ExceptionHandler 커스터마이징2 (0) | 2024.02.23 |