😀 Jerry/면접 질문

[1분 면접] HTTP 매서드에서 멱등성이란 무엇인가 ?

Jerry_K 2025. 2. 21. 00:27

멱등성이란 ? 

  • 영어로 Idempotent (살면서 처음 보는 단어이다...)
  • 사전적의미로는 동일한 연산을 여러 번 수행해도 똑같은 결과를 나타냄

 

Idempotence는 멱등성 / Safety는 서버의 상태 변경 여부

 

HTTP 매서드의 멱등성

  • 동일한 요청을 한번 보내는것과 여러번 보내는 것이 동일한 효과를 지님
  • 멱등하다면 요청을 재시도할 때 같은 서버의 상태를 보장하기 때문에 문제 없음
  • 멱등하지 않는다면 재시도 요청시 중복 요청을 보내 문제 발생 

 

멱등한 HTTP 매서드 

  • GET (리소스 조회 요청으로 서버 상태 변하지 않음)
  • HEAD (응답 없이 헤더만 반환, 상태 변경 없음)
  • PUT (특정 리소스를 완전히 교체하는 요청, 동일한 데이터 여러번 보내도 똑같은 결과)
  • DELETE (리소스 삭제하는 요청으로, 다시 요청해도 결과 동일)

 

멱등하지 않는  HTTP 매서드 

  • POST (새로운 리소스 생성하는 요청, 여러 번 보내면 중복된 리소스 생성)
  • PATCH (리소스 일부 수정하는 요청, 요청 할 때 마다 상태가 다르게 반환)

아래 예시를 보면 좀 더 쉽게 이해 할 수 있을 것이다.

 

서버가 정상적으로 결제를 처리했지만,
응답이 도착하기 전에 네트워크 문제 발생하여 클라이언트가 응답을 받지 못하는 상황

 

Case 1 ( POST 요청) 

  • 사용자는 결제를 실패했다고 생각하고 다시 결제 버튼 클릭 
  • 서버는 새로운 결제 요청을 처리하고 두 번 결제가 됨
  • POST는 멱등성이 없기 때문에 동일한 요청을 여러번 보내면 결과가 달라짐

 

Case 2 (PUT 요청)

  • 사용자가 결제 버튼을 처음 클릭하면, 클라이언트는 고유한 결제 ID 생성 됨
  • 네트워크 문제로 클라이언트는 응답을 받지 못해 동일한 요청 다시 보냄 
  • 서버는 결제 ID를 통해 이미 처리된 결제임을 확인하고, 같은 응답을 다시 반환 
  • 동일한 요청을 여러 번 보내도 결제가 한 번만 처리 보장