멱등성(Idempotence)은 같은 연산을 여러 번 적용해도 한 번 적용한 뒤의 결과가 더 변하지 않는 성질이다. HTTP에서는 동일한 요청을 반복했을 때 서버에 의도한 효과가 한 번의 요청과 같은지를 따진다. 응답을 받기 전에 연결이 끊겼을 때 요청을 다시 보내도 되는지 판단하는 데 쓰인다. ([RFC 9110의 멱등성 정의](https://www.rfc-editor.org/rfc/rfc9110.html#section-9.2.2)) - 예컨대 편집기의 너비 값을 `800`으로 설정하는 연산은 같은 설정을 반복해도 `800`이다. 현재 너비에 `10`을 더하는 연산은 반복할 때마다 달라진다. - 자료를 가져오는 기능에서도 같은 레코드를 재전송할 때 새 항목을 계속 만드는지, 같은 식별자의 항목을 갱신하는지에 따라 결과가 달라진다. [[지속 식별자]]와 중복 처리 규칙은 이러한 [[재시도]]를 설계할 때 함께 검토할 수 있다. - 반복해도 효과가 같다는 것과 실행 전으로 되돌릴 수 있다는 것은 다르다. 삭제를 여러 번 요청해도 삭제 상태는 같지만, 복구에는 [[백업]] 같은 별도의 수단이 필요하다. [[가역성]]과 멱등성은 서로 다른 질문이다. ## 기타 등등 - HTTP의 `DELETE`는 규격상 멱등 메서드다. 첫 요청과 뒤의 요청이 서로 다른 응답을 보내더라도 서버에 의도한 효과가 같다면 이 성질에 어긋나지 않는다. [출처](https://www.rfc-editor.org/rfc/rfc9110.html#section-9.2.2) - 규격은 멱등 요청마다 접속 로그나 수정 이력을 따로 남기는 것을 허용한다. 요청이 요구한 효과와 서버가 부수적으로 남기는 기록을 구분하기 때문이다. [출처](https://www.rfc-editor.org/rfc/rfc9110.html#section-9.2.2) #개념 #프로그래밍 #웹