멱등성이란?
동일한 요청을 한 번 만 보내건 여러 번 보내던 같은 효은 효과를 주고, 서버 상태도 동일하게 유지될 때, 멱등성을 가진다고 한다. HTTP 메서드에서 멱등성을 가진다라고 표현하는데, 올바르게 메서드를 구현한 경우
GET
, HEAD
, PUT
, DELETE
메서드만 멱등성을 가진다.📌 DELETE의 경우만 두 번째 호출에서 404를 반환하지만 결과적으로 서버는 동일하게 유지되므로 멱등성을 가진다.
멱등성을 가진다라는 의미는 어느정도 안정성이 있다고 볼 수 있다. 하지만 무조건 안전하다는 의미는 아니기 때문에 안전한 메소드 설계에 힘을 써야한다.
다른 메소드는 익숙하므로 생략..
PUT 메소드
첫 메소드 요청을 보냈을 때 데이터가 없다면 생성할 것이고 기존 데이터가 존재한다면 수정하는 메소드다. 기존에 데이터가 있든 없든 이후 수정되는 서버의 상태는 동일하므로 멱등성을 띈다.
PATCH 메소드
양날 검과 같은데, 설계에 따라 멱등성을 띄고 안 띌 수 있다. PATCH 메소드는 데이터를 수정하는데, 개발자가 일정 값으로 수정되도록 설계한다면 멱등성을 띈다. 반대로 요청마다 값을 1씩 더한다거나 DB에 요청한 날짜가 포함된다는 등. 이 처럼 설계한다면 멱등성이 없는 것이다.
HTTP 메소드 안정성
HTTP 메소드 | 안정성 여부 |
GET | O |
POST | X |
PUT | X |
PATCH | X |
DELETE | X |