HTTP Method별 속성표

안전성(Safe)
멱등성(Idempotent)
GET → 같은 결과가 계속 조회된다.
PUT → 수정해서 대체된 후의 결과는 계속 같다.
DELETE → 같은 요청을 여러번해도 삭제된 결과는 같다.
POST → 멱등성을 보장하지 않는다.
ex) 계좌 송금을 두번한다면?, 게시판 글쓰기, 회원가입
멱등성(Idempotency)은 연산을 여러 번 수행해도 결과가 달라지지 않는 성질을 말함.
예를 들어, 너가 전등 스위치를 누르면 불이 켜진다고 하자.
근데 이미 불이 켜져 있을 때 또 눌러도 불이 더 켜지진 않지?
이게 바로 멱등성임. 여러 번 해도 같은 결과가 나오는 거.
개발에서 멱등성이 중요한 이유
API나 데이터베이스 작업할 때, 같은 요청을 여러 번 보내도 결과가 변하면 안 되는 경우가 있음.
예제 1: DELETE /user/123
사용자 123번을 삭제하는 요청.
한 번 보내든, 열 번 보내든 결과는 "사용자가 삭제됨" → 멱등성 O
예제 2: POST /order
주문을 생성하는 요청.
같은 요청을 두 번 보내면 주문이 두 개 생김 → 멱등성 X
즉, 멱등성 있는 연산은 같은 요청을 여러 번 해도 결과가 변하지 않음.
주로 GET, PUT, DELETE는 멱등성이 있고, POST는 멱등성이 없는 경우가 많음.
항상 결과가 같다면 마음껏 재시도 해도된다.
만약 멱등하지 않다면, 중복 요청을 보내서는 안된다.
복구 매커니즘에 사용한다.
ex) 요청 실패시 서버에서 자동으로 재시도
리소스 조회(GET Method) 재요청 중간에 변경된다면?

ex) 도서관 책 재고 조회(실시간으로 대여 혹은 판매됨)
GET, HEAD, POST 메소드는 캐시가 가능하다.
일반적으로 GET, HEAD 정도만 캐시로 사용한다.
ex) 변경 가능성이 적은 정적자원(HTML, CSS, IMAGE, JS 등)을 주로 캐싱한다.