매일 공부/Backend CS

[매일메일] HTTP 메서드에서 멱등성이란

개발하는 동그리 2025. 4. 7. 22:48
멱등성이란

멱등성이란 같은 연산을 여러 번 수행해도 결과가 변하지 않는 성질을 의미해.
즉, 같은 요청을 한 번 보내든, 여러 번 보내든 결과가 동일해야 해!

 

멱등한 HTTP 메서드 vs 멱등하지 않은 메서드


GET ✅ 멱등함 같은 데이터를 조회하므로 결과가 변하지 않음
PUT ✅ 멱등함 같은 데이터를 여러 번 수정해도 결과가 동일
DELETE ✅ 보통 멱등함 같은 데이터를 여러 번 삭제 요청해도 결과가 동일 (이미 삭제된 경우 404 응답)
POST ❌ 멱등하지 않음 같은 데이터를 여러 번 생성하면 중복 삽입될 수 있음

 

멱등성을 보장하는 방법

  1. 고유한 요청 ID 사용
    • 예: requestId를 클라이언트가 생성해서 서버에서 중복 요청인지 확인
    • POST 요청 시 requestId가 동일하면, 이미 처리된 요청이라면 무시
  2. 데이터 업데이트 시 PUT 사용
    • PUT은 특정 리소스를 업데이트하는 개념이라 멱등성이 보장됨.
  3. 트랜잭션 관리
    • DB에서 UNIQUE 제약 조건을 사용하여 중복 삽입 방지
    • 예: email을 UNIQUE로 설정하면 같은 이메일로 회원가입 불가

정리

  • 멱등성은 같은 요청을 여러 번 보내도 결과가 변하지 않는 성질
  • GET, PUT, DELETE는 보통 멱등하지만, POST는 멱등하지 않음
  • 주문, 결제 같은 API는 멱등성을 고려해야 중복 처리를 방지할 수 있음

 

https://www.maeil-mail.kr/question/90