"HTTP 메서드는 반드시 이렇게 되어 있다"가 아님.
약속 같은 것이므로 개발자가 이를 어기고 다르게 만들 수도 있음.
즉, "HTTP 메서드가 이렇게 사용되도록 구현해야 한다"는 당위의 뜻.
멱등성은 클라이언트가 의도한 효과에 적용되는 개념.
다시 말해, 여러 번 호출 시 최초 호출과 나머지 호출을 비교했을 때, 서버의 응답이나 클라이언트의 의도와 상관없는 서버 상태가 달라지더라도 멱등성과는 관련이 없음.
예를 들어,
3045
)을 삭제하려고 DELETE
/posts/3045
을 한 번 호출하든 여러 번 호출하든, 서버의 응답은 다를 수 있겠지만, 게시물(ID: 3045)만 삭제되었다는 결과는 같음3045
)을 조회하려고 GET
/posts/3045
을 호출할 때마다 서버에서 로그를 생성하여 서버 상태가 변하더라도 조회 결과는 같음정리
GET
, PUT
, DELETE
는 멱등성을 가지는 반면, POST
는 가지지 않음PATCH
는 애매함참고
안전함(Safe)과의 관계
안전한 HTTP 메서드란?
GET
, HEAD
, OPTIONS
.
.
.
그래서 멱등성이 실용적 관점에서 왜 중요한데?
순수함수 같은 Idempotent APIs 때문인가?!