HTTP 메서드들의 속성에 대해서 알아볼 것이다.

 

1. 안전(Safe Methods)

2. 멱등(idempotent Methods)

3. 캐시 가능(Cacheable Methods)

 

 

1. 안전(Safe Methods)

안전은 호출을 해도 리소스를 변경하지 않는다. 그리고 안전 속성은 해당 리소스만 고려하기 때문에 계속 호출해서 로그 같은 게 쌓여서 장애가 발생하는 부분까지 고려를 하지 않기 때문이다.

 

2. 멱등(idempotent Methods)

멱등은 한번 호출하든 두 번 호출하든 1억 번 호출하든 결과가 똑같이 나온다

멱등성을 가진 HTTP  주요 메서드는  GET, PUT, DELETE 방식이다. 

GET 한번 조회하든 두번 조회하든 같은 결과가 조회된다
PUT 결과를 대체한다. 따라서 같은 요청을 여러번 해도 최종 결과는 같다
DELETE 결과를 삭제한다. 같은 요청을 여러번 해도 삭제된 결과는 똑같다.

* POST방식은 멱등이 아니다. 결제로 예를 들면 두 번 결제하면 똑같은 결과가 안 나오고 중복해서 발생할 수 있기 때문이다.

 

** 멱등의 예 **

만약 재요청 중간에 다른 곳에서 리소스를 변경했을 경우

사용자 A : GET -> username : hoestory, age : 24

사용자 B : PUT -> username : hoe, age : 24

사용자 C : GET -> username : hoe, age = 24    <- 사용자 2의 영향으로 바뀐 데이터 조회

 

위에 예시는 멱등 하다고 할 수 있다. 왜냐하면 멱등은 외부 요인으로 중간에 리소스가 변경되는 것까지는 고려하지 않기 때문이다.

 

3. 캐시 가능(Cacheable Methods)

캐시 가능은 응답 결과 리소스를 캐시 해서 사용해도 되는가에 대한 것이고 HTTP 메서드인 GET, HEAD, POST, PATCH 방식들은 캐시 가능하다.

실제로는 GET, HEAD 방식만 캐시로 사용한다. 그 이유는 POST, PATCH는 본문 내용까지 캐시 키로 고려해야 하는데 구현이 쉽지 않기 때문이다.

 

 

 

 

 

 

 

'HTTP' 카테고리의 다른 글

HTTP 메서드 종류와 기능  (0) 2021.11.04