- 안전
- 멱등
- 캐시 가능
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는 본문 내용까지 캐시 키로 고려해야 하는데, 구현이 쉽지 않다.
'HTTP 웹 지식' 카테고리의 다른 글
HTTP 상태 코드1(HTTP 상태 코드 소개) (0) | 2022.01.11 |
---|---|
HTTP 메서드 활용1(클라이언트에서 서버로 데이터 전송1) (0) | 2022.01.09 |
HTTP 메서드3(PUT, PATCH, DELETE) (0) | 2022.01.09 |
HTTP 메서드2(GET, POST) (0) | 2022.01.09 |
HTTP 메서드1(HTTP API를 만들어보자) (0) | 2022.01.07 |