우리는 평소 멱등성이라는 말을 들어본 적이 없을 수 도 있습니다. 저 또한 이번 http의 기초적인 통신에 대해 공부하며 처음 들은 단어였으며, 자세하게 안 단어도 아니었습니다.
멱등성이란 동일한 작업을 여러 번 수행해도 결과가 동일한 특성을 말합니다.
예를 들면 하나의 숫자에 1을 곱하는것을 여러번 수행하더라도 결과가 동일한 것과 같은 특성을 멱등성이라 합니다. 이 멱등성은 다양한 분야에서 찾아 볼 수 있습니다.
HTTP Method의 멱등성은 같은 요청을 여러 번 수행해도 동일한 결과를 반환하는 특성을 말합니다.
멱등성이 있는 HTTP Method를 사용하면, 클라이언트는 여러 번 같은 요청을 보내도 안전하게 요청을 처리할 수 있습니다.
멱등성이 없는 HTTP Method는 같은 요청을 여러 번 보내면, 각각의 요청에 대해 서버가 리소스의 상태나 서버의 상태를 변경하게 됩니다. 이는 보안상의 문제나 데이터의 일관성 등의 문제를 발생시킬 수 있습니다. 멱등하지 않은 메서드에 멱등성을 제공하려면 서버에서 멱등성을 구현해야 합니다.
HTTP Method의 멱등성과 안정성
| 메서드 | 멱등성 | 안정성 |
|---|---|---|
| CONNECT | X | X |
| DELETE | O | X |
| GET | O | O |
| HEAD | O | O |
| OPTIONS | O | O |
| POST | X | X |
| PUT | O | X |
| PATCH | X | X |
| TRACE | O | O |
GET, PUT처럼 리소스를 조회하거나 대체하는 메서드는 멱등합니다.
PUT도 여러번 호출해도 같은 리소스를 업데이트 하기 때문에 결과가 달라지지 않습니다.
DELETE도 여러번 호출하여도 같은 리소스를 삭제하기에 결과가 달라지지 않습니다.
그러나 POST와 PATCH와 같이 서버에 데이터를 추가하는 메서드는 멱등하지 않습니다.
HTTP Method에서는 멱등성 말고도 안정성이라는 속성도 있습니다.
안정성이란 해당 메소드를 실행했을 때 요청한 리소스나 서버의 상태를 변경하지 않는 특성을 의미합니다. 안정성이 있는 메서드는 멱등성도 보장합니다. 그러나 멱등성이 있는 메서드가 항상 안정성을 지니지는 않습니다.