멱등성이란
멱등성이란 같은 연산을 여러 번 수행해도 결과가 변하지 않는 성질을 의미해.
즉, 같은 요청을 한 번 보내든, 여러 번 보내든 결과가 동일해야 해!
✅ 멱등한 HTTP 메서드 vs 멱등하지 않은 메서드
GET | ✅ 멱등함 | 같은 데이터를 조회하므로 결과가 변하지 않음 |
PUT | ✅ 멱등함 | 같은 데이터를 여러 번 수정해도 결과가 동일 |
DELETE | ✅ 보통 멱등함 | 같은 데이터를 여러 번 삭제 요청해도 결과가 동일 (이미 삭제된 경우 404 응답) |
POST | ❌ 멱등하지 않음 | 같은 데이터를 여러 번 생성하면 중복 삽입될 수 있음 |
✅ 멱등성을 보장하는 방법
- 고유한 요청 ID 사용
- 예: requestId를 클라이언트가 생성해서 서버에서 중복 요청인지 확인
- POST 요청 시 requestId가 동일하면, 이미 처리된 요청이라면 무시
- 데이터 업데이트 시 PUT 사용
- PUT은 특정 리소스를 업데이트하는 개념이라 멱등성이 보장됨.
- 트랜잭션 관리
- DB에서 UNIQUE 제약 조건을 사용하여 중복 삽입 방지
- 예: email을 UNIQUE로 설정하면 같은 이메일로 회원가입 불가
✅ 정리
- 멱등성은 같은 요청을 여러 번 보내도 결과가 변하지 않는 성질
- GET, PUT, DELETE는 보통 멱등하지만, POST는 멱등하지 않음
- 주문, 결제 같은 API는 멱등성을 고려해야 중복 처리를 방지할 수 있음
https://www.maeil-mail.kr/question/90
'매일 공부 > Backend CS' 카테고리의 다른 글
[매일메일] 팬텀 리드(Phantom Read) 란? (0) | 2025.04.09 |
---|---|
[매일메일] 데이터베이스 시스템 동시성 제어 (MVCC, Lock-Based Concurrency Control) (0) | 2025.04.08 |
[매일메일] 스레드, 프로세스, 코어의 수 (0) | 2025.04.03 |
[매일메일] 데이터베이스 커넥션 풀(Connection Pool)을 사용하지 않으면 어떤 문제가 발생 (0) | 2025.04.03 |
[매일메일] 단위 테스트와 통합 테스트의 차이점 (2) | 2025.04.01 |