멱등성

이건우·2021년 12월 14일
0

Interaction With Server

목록 보기
15/15

개요

동일한 요청을 한 번 보내는것과 여러번 연속으로 보내는것 같은 효과를 지난다면 ?

서버의 상태도 동일하게 남겼을때, 해당 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

profile
내가 느낌만알고 한줄도 설명할줄 모른다면 '모르는 것'이다.

0개의 댓글