멱등성(Idempotence)은 연산을 여러 번 반복해서 실행하더라도, 그 결과가 한 번 실행했을 때와 동일한 성질을 말한다.
즉, 같은 요청을 여러 번 보내도 시스템 상태가 변하지 않거나, 결과가 바뀌지 않는 연산을 "멱등하다"고 부른다.
f(x) = min(x, 100)f(f(f(150))) = 100)HTTP에서는 멱등성이 중요한 의미를 가진다:
| HTTP 메서드 | 멱등성 여부 | 설명 |
|---|---|---|
| GET | ✅ | 여러 번 호출해도 동일한 리소스를 조회할 뿐, 상태 변화 없음 |
| PUT | ✅ | 서버에 특정 리소스를 같은 내용으로 덮어쓰기 → 여러 번 실행해도 결과 동일 |
| DELETE | ✅ | 같은 리소스를 여러 번 삭제 요청해도, 첫 번째 이후는 변화 없음 |
| POST | ❌ | 보통 매번 새로운 리소스를 생성하므로, 여러 번 호출 시 결과가 달라질 수 있음 |
| PATCH | ❌ (대부분) | 부분 수정은 반복 시 다른 결과를 만들 수 있음 |
1) 주문 생성 API
POST /orders → 멱등성이 없음: 두 번 호출하면 주문 2개가 생성됨2) 주문 상태 변경 API
PUT /orders/{id}/status (예: 상태를 CANCELLED로 변경)3) 결제 시스템에서 멱등 키 사용
idempotency key를 사용해 중복 결제를 방지할 수 있음