멱등성이란 ?
- 영어로 Idempotent (살면서 처음 보는 단어이다...)
- 사전적의미로는 동일한 연산을 여러 번 수행해도 똑같은 결과를 나타냄
HTTP 매서드의 멱등성
- 동일한 요청을 한번 보내는것과 여러번 보내는 것이 동일한 효과를 지님
- 멱등하다면 요청을 재시도할 때 같은 서버의 상태를 보장하기 때문에 문제 없음
- 멱등하지 않는다면 재시도 요청시 중복 요청을 보내 문제 발생
멱등한 HTTP 매서드
- GET (리소스 조회 요청으로 서버 상태 변하지 않음)
- HEAD (응답 없이 헤더만 반환, 상태 변경 없음)
- PUT (특정 리소스를 완전히 교체하는 요청, 동일한 데이터 여러번 보내도 똑같은 결과)
- DELETE (리소스 삭제하는 요청으로, 다시 요청해도 결과 동일)
멱등하지 않는 HTTP 매서드
- POST (새로운 리소스 생성하는 요청, 여러 번 보내면 중복된 리소스 생성)
- PATCH (리소스 일부 수정하는 요청, 요청 할 때 마다 상태가 다르게 반환)
아래 예시를 보면 좀 더 쉽게 이해 할 수 있을 것이다.
서버가 정상적으로 결제를 처리했지만,
응답이 도착하기 전에 네트워크 문제 발생하여 클라이언트가 응답을 받지 못하는 상황
Case 1 ( POST 요청)
- 사용자는 결제를 실패했다고 생각하고 다시 결제 버튼 클릭
- 서버는 새로운 결제 요청을 처리하고 두 번 결제가 됨
- POST는 멱등성이 없기 때문에 동일한 요청을 여러번 보내면 결과가 달라짐
Case 2 (PUT 요청)
- 사용자가 결제 버튼을 처음 클릭하면, 클라이언트는 고유한 결제 ID 생성 됨
- 네트워크 문제로 클라이언트는 응답을 받지 못해 동일한 요청 다시 보냄
- 서버는 결제 ID를 통해 이미 처리된 결제임을 확인하고, 같은 응답을 다시 반환
- 동일한 요청을 여러 번 보내도 결제가 한 번만 처리 보장
'😀 Jerry > 면접 질문' 카테고리의 다른 글
[1분 면접] DB 시스템에서 동시성 제어하는 방법 (0) | 2025.02.21 |
---|---|
[1분 면접] 사용자가 웹사이트에 처음 접근했을 때 발생하는 일련의 과정 (0) | 2025.02.20 |
[1분 면접] DB에서 커넥션 풀을 사용하지 않을 때 발생하는 문제는 ? (0) | 2025.02.18 |
[1분 면접] 스레드, 프로세스, 코어의 수는 많을 수록 좋을까 ? (0) | 2025.02.17 |
[1분 면접] 단위 테스트와 통합 테스트의 차이점 (0) | 2025.02.15 |