동일한 요청을 한 번 보내는것과 여러번 연속으로 보내는것 같은 효과를 지난다면 ?
서버의 상태도 동일하게 남겼을때, 해당 HTTP 메서드
가 멱등성
을 가졌다고 말한다. 다른말로 멱등성
을 가진 메서드는 어떤 부수효과(Side Effect)
를 가져서도 안된다.
올바르게 구현될 경우 GET
,DELELTE
,PUT
,HEAD
메서드는 멱등성을 가지며 , POST
메서드는 그렇지 않다. 즉 모든 '안전한 메서드' 는 멱등성
을 가진단 말이된다.
하지만 DELETE
가 멱등성
을 가진다는 것은, REST API
에서 개발자는 DELETE
메서드를 사용해 "목록의 마지막 항목 제거" 기능을 구현해서는 안된다는 것이다.
GET /pageX HTTP/1.1
는 멱등성을 가진다. 여러 번 연속해서 호출해도 클라이언트가 받는 응답은 동일하다.
GET /pageX HTTP/1.1
GET /pageX HTTP/1.1
GET /pageX HTTP/1.1
GET /pageX HTTP/1.1
POST /add_row HTTP/1.1
는 멱등성을 갖지 않는다. 여러 번 호출할 경우, 여러 열을 추가함.
POST /add_row HTTP/1.1
POST /add_row HTTP/1.1 -> Adds a 2nd row
POST /add_row HTTP/1.1 -> Adds a 3rd row
DELETE /idX/delete HTTP/1.1
의 상태 코드는 응답마다 달라질 수 있지만, 그럼에도 멱등성을 가진다.
DELETE /idX/delete HTTP/1.1 -> Returns 200 if idX exists
DELETE /idX/delete HTTP/1.1 -> Returns 404 as it just got deleted
DELETE /idX/delete HTTP/1.1 -> Returns 404