Recent Posts
Recent Comments
Today
Total
관리 메뉴

Free Code

[API] 멱등성 (Idempotence) 이란? 본문

카테고리 없음

[API] 멱등성 (Idempotence) 이란?

reecoder 2024. 5. 2. 22:58

일단, 멱등성의 뜻은 연산을 여러번 하더라도 결과가 달라지지 않는 성질을 뜻합니다.

 

 

Spring Boot 프로젝트에서 API를 작업 하면서 @PutMapping 과 @PostMapping의 차이에 대한 궁굼증이 생겼는데

검색하고 알아본 결과 멱등성의 차이가 있다는 사실을 알 수 있었습니다.

 

 

HTTP 메서드에서 동일한 요청을 한 번 보내는 것과 여러 번 연속으로 보내는 것이 같은 효과를 지니고,

서버의 상태도 동일하게 남을 때, 해당 HTTP 메서드는 멱등성을 가진다고 말할 수 있습니다.

 

 

REST API 에서는 주로 HTTP 메소드를 사용하는데 GET(읽기), POST(생성), PUT(전체 수정), PATCH(부분 수정), DELETE(삭제) 등이 포함됩니다. 이떄 POST를 제외한 메소드들은 멱등성이 보장 되어야 합니다.

 

 

온라인 쇼핑몰의 상품 정보를 다루는 API로 예시를 들어보겠습니다.

 

상품에 대한 정보를 가져오는 GET요청이 있을 수 있고 새 상품을 추가 하기위해 POST 요청을 할 수 있고

 또 기존 상품을 수정하기 위한 PUT, PATCH 요청 그리고 상품을 삭제하는 DELETE 요청이 있습니다.

 

 

이러한 요청들이 수행됐을 때 서버상태의 변화에 따라서 멱등한 메서드와 안전한 메서드 두개로 나눌 수 있습니다.

 

 

먼저 멱등 메서드는 위에 말한 것과 같이 여러 번 수행해도 결과가 첫번째 수행 이후로 변경되지 않는 성질을 가리킵니다.

즉, 한 번 이상 수행해도 서버의 상태에 추가적인 변화가 없어야 한다는 뜻 입니다.

이러한 특성은 API 사용 시 예측 가능성과 안정성을 보장하는 데 중요합니다.

 

 

이와는 다르게 안전한 메서드는 서버의 데이터를 전혀 변경하지 않는 것을 의미합니다.

예를 들어 조회를 하는 메서드인 GET, HEAD와같은 메서드가 있겠습니다.

이들은 오직 데이터를 조회하거나 정보를 받기만 하는 역할을 하며, 서버에 어떠한 영향도 미치지 않습니다.

 

 


출처
https://developer.mozilla.org/ko/docs/Glossary/Idempotent 
 

멱등성 - MDN Web Docs 용어 사전: 웹 용어 정의 | MDN

동일한 요청을 한 번 보내는 것과 여러 번 연속으로 보내는 것이 같은 효과를 지니고, 서버의 상태도 동일하게 남을 때, 해당 HTTP 메서드가 멱등성을 가졌다고 말합니다.

developer.mozilla.org