HTTP 웹 지식

HTTP 메서드4(메서드의 속성)

귀요미찰쓰 2022. 1. 9. 10:10
728x90
반응형
반응형

- 안전

- 멱등

- 캐시 가능

 

HTTP 메서드의 속성

 

안전(Safe)

- 호출해도 리소스를 변경하지 않는다.

- 예를 들면 GET 같은 경우는 안전하고 POST, DELETE, PUT, PATCH 안전하진 않다. 여러번 호출 했을 때 리소스가 변경이 일어나는건 안전하지 않는거다.

- GET도 계속 호출을 할 경우에는 로그 같은게 쌓여서 장애가 일어날 수 있다. 그런데 그런 것은 고려하지 않고 안전이라는 것은 해당 리소스가 변경되는지만 고려한다.

 

멱등(Idempotent)

- f(f(x)) = f(x)

- 쉽게 말하자면, 한번 호출하든 두번 호출하든 100번 호출하든 결과가 같다.

- 멱등 메소드:

         - GET: 한번 조회하든, 두번 조회하든 같은 결과가 조회된다.

         - PUT: 결과를 대체한다. 따라서 같은 요청은 여러번 해도 최종 결과는 같다.

         - DELETE: 결과를 삭제한다. 같은 요청을 여러번해도 삭제된 결과는 똑같다.

         - POST: 멱등이 아니다! 두번 호출하면 같은 결제가 중복해서 발생할 수 있다.

 

멱등은 어디에 활요하나?

- 자동 복구 메커니즘에 활용한다. 

- 서버가 DELETE을 했는데 잘 되었는데 모르겠을 때 다시 DELETE을 해준다. 다시 말하자면, DELETE는 멱등이므로 다시 요청해도 결과는 똑같다.

 

* 중요한 것: 멱등은 외부 요인으로 중간에 리소스가 변경되는 것까지는 고려하지는 않는다.

 

 

 

캐시가능(Cacheable)

웹 브라우저에서 되게 큰 이미지 하나를 요청한다고 가정을 해보자. 그러면 그 다음에 똑같은 그 큰 리소스를 요청하면 시간이 걸린다. 그래서 내 로컬 PC에 이 이미지를 저장한다. 이것을 캐시라고한다.

웹 브라우저 내부에 이 이미지를 저장할 수 있냐 없냐가 캐시 가능이라고 생각하면 된다.

 

- 응답 결과 리소스를 캐시해서 사용해도 되는가?

- GET, HEAD, POST, PATCH 캐시 가능

- 실제로는 GET, HEAD정도만 캐시로 사용

      - POST, PATCH는 본문 내용까지 캐시 키로 고려해야 하는데, 구현이 쉽지 않다.

 

 

 

 

반응형