1. HTTP Method
| 메서드 | 역할 | 멱등성 (Idempotent) | 주요 특징 |
|---|---|---|---|
GET |
리소스 조회 | O | 서버 상태를 변경하지 않으며, 주로 데이터를 조회할 때 사용한다. |
POST |
요청 데이터 처리 | X | 주로 리소스 생성 또는 처리 요청에 사용하며 호출마다 결과가 달라질 수 있다. |
PUT |
리소스 전체 대체 | O | 대상 리소스를 전체 교체하며, 없으면 새로 생성하는 방식으로 구현되기도 한다. |
PATCH |
리소스 부분 변경 | △ | 리소스 일부만 수정하며 구현 방식에 따라 멱등성이 달라질 수 있다. |
DELETE |
리소스 삭제 | O | 특정 리소스를 삭제하며, 동일 요청을 반복해도 최종 상태는 동일하다. |
2. HTTP 메서드의 멱등성
멱등성의 의미
같은 요청을 여러 번 수행해도 서버의 최종 상태가 동일하게 유지되는 성질을 의미한다.
GET,PUT,DELETE는 일반적으로 멱등성을 만족한다.POST는 요청할 때마다 새로운 자원이 생성될 수 있어 멱등하지 않다.PATCH는 설계 방식에 따라 멱등성을 가질 수도 있고 가지지 않을 수도 있다.
재시도와의 관계
네트워크 장애나 타임아웃이 발생했을 때, 클라이언트는 멱등성을 기준으로 재요청 가능 여부를 판단한다.
- 멱등한 메서드는 동일 요청을 다시 보내도 상태 왜곡 가능성이 낮다.
- 멱등하지 않은 메서드는 중복 생성, 중복 결제와 같은 문제가 발생할 수 있다.
3. Safe와 Idempotent의 차이
| 개념 | 의미 | 해당 메서드 예시 |
|---|---|---|
| Safe | 호출해도 리소스 상태를 변경하지 않는다. | GET |
| Idempotent | 여러 번 호출해도 최종 상태가 동일하다. | GET, PUT, DELETE |
핵심 정리
Safe는 상태 변경 여부에 초점을 두고, Idempotent는 반복 호출 시 최종 상태 동일 여부에 초점을 둔다.
따라서
PUT,DELETE는 안전하지 않을 수 있지만 멱등할 수 있다.