REST Template의 Idempotent(멱등)

2020. 8. 12. 14:26프로그래밍 언어/Java

idempotent(멱등)

연산을 여러 번 적용하더라도 결과가 달라지지 않는 성질을 의미함.

REST 서비스에서 idempotent란, 같은 요청을 여러 번 하더라도 그 결과가 매번 동일한 것을 의미함.

 

메서드 의미 idempotent
POST Create X
GET Select O
PUT Update O
DELETE Delete O

 

idempotent한 것

a=4와 같은 명령은 반복적으로 수행해도 결과가 같음.

따라서 명령어 수행 과정에서 실패하더라도 반복적으로 a=4를 수행하면 됨

(= 실패시 트랜잭션 복구를 위해서 같은 명령어를 다시 실행하면 됨)

조회(Select), 기존의 상태를 새로운 상태로 변경(Update), 기존 상태를 삭제(Delete)하는 명령은 여러 번 수행해도 결과가 같음.

 

idempotent하지 않은 것

a++는 호출 할 때마다 값이 증가되기 때문에, 매번 결과가 다름.

a++와 같은 명령어를 실패했을 경우에는 올라간 값을 다시 -1로 빼줘야함.

(= 실패를 대비해 트랜잭션 복구를 위해서 기존 상태를 미리 저장했다가 실패시 원복해야함)

생성(Create)의 경우 여러 번 수행 할 경우 매번 새로운 값을 생성하기 때문에 결과가 다름.