1. 멱등의 개념


즉, 컴퓨터 과학에서 멱등하다는 것은 첫 번째 수행을 한 뒤 여러 차례 적용해도 결과를 변경시키지 않는 작업 또는 기능의 속성을 뜻한다. 즉, 멱등한 작업의 결과는 한 번 수행하든 여러 번 수행하든 같다.

   +---------+------+------------+---------------+
   | Method  | Safe | Idempotent | Reference     |
   +---------+------+------------+---------------+
   | CONNECT | no   | no         |Section 4.3.6 |
   | DELETE  | no   | yes        |Section 4.3.5 |
   | GET     | yes  | yes        |Section 4.3.1 |
   | HEAD    | yes  | yes        |Section 4.3.2 |
   | OPTIONS | yes  | yes        |Section 4.3.7 |
   | POST    | no   | no         |Section 4.3.3 |
   | PUT     | no   | yes        |Section 4.3.4 |
   | TRACE   | yes  | yes        |Section 4.3.8 |
   +---------+------+------------+---------------+

2. 멱등성과 안전성


GET, PUT처럼 리소스를 조회하거나 대체하는 메서드는 멱등하다. PUT은 여러 번 호출해도 매번 같은 리소스로 업데이트되기 때문에 결과가 달라지지 않는다. DELETE 역시 여러 번 호출해도 삭제된 리소스에 대한 결과는 달라지지 않지만 서버 데이터를 변경하는 POST, PATCH는 호출할 때마다 응답이 달라지기 때문에 멱등한 메서드가 아니다. 이렇게 멱등하지 않은 메서드에 멱등성을 제공하려면 서버에서 멱등성을 구현해야 한다.

HTTP 메서드의 안전성과 멱등성은 어떻게 다를까?

HTTP 메서드의 주요 속성에는 멱등성 외에도 안전성이 있다. 안전성이 보장된 메서드는 리소스를 변경하지 않는다. GET, HEAD, OPTIONS는 안전한 메서드다. 안전성이 보장된 메서드는 멱등성도 보장하지만, 멱등성을 지닌 메서드가 항상 안전성을 보장하지는 않는다. 예를 들어 PUT과 DELETE는 멱등한 메서드지만, 리소스에 변화를 일으키기 때문에 안전한 메서드는 아니다.