본문 바로가기
네트워크

HTTP 메서드 속성(안전, 멱등, 캐시)

by 어쩌다개발 2022. 3. 28.
반응형

안전(Safe)

- 호출해도 리소스를 변경하지 않는다.
Q. 그래도 계속 호출해서, 로그 같은게 쌓여서 장애가 발생할 경우?
A. 안전은 해당 리소스만 고려한다. 해당 부분까지 고려하지 않는다.

멱등(Idempotent)

- f(f(x)) = f(x)
- 한 번 호출하든 두 번 호출하든 100번 호출하든 결과가 똑같다.
- 멱등 메서드

GET 한 번 조회하든, 두 번 조회하든 같은 결과가 조회된다.
PUT 결과를 대체한다. 따라서 같은 요청을 여러번 해도 최종 결과는 같다.
DELETE 결과를 삭제한다. 같은 요청을 여러번 해도 삭제된 결과는 똑같다.
POST 멱등이 아니다. 두 번 호출하면 같은 결제가 중복해서 발생할 수 있다.

- 활용
     - 자동 복수 메커니즘
     - 서버가 TIMEOUT 등으로 정상 응답을 못 주었을 때, 클라이언트가 같은 요청을 다시 해도 되는가에 판단 근거
Q. 재요청 중간에 다른 곳에서 리소스를 변경해버리면?
    - 사용자1 : GET > username : A, age:20
    - 사용자2 : PUT > username : A, age:30
    - 사용자3 : GET > username : A, age:30 > 사용자2의 영향으로 바뀐 데이터가 조회
A. 멱등은 외부 요인으로 중간에 리소스가 변경되는 것까지는 고려하지 않는다.

캐시가능(Cacheable)

- 응답 결과 리소스를 캐시해서 사용해도 되는가?
- GET, HEAD, POST, PATCH 캐시 가능
- 실제로는 GET, HEAD 정도만 캐시로 사용, POST, PATCH는 본문 내용까지 캐시 키로 고려해야 하는데, 구현이 쉽지 않음.


-------------------------------------------------------------------

- safe : 리소스를 변경하지 않는, 즉 읽기전용 메서드(GET, HEAD)를 말한다.
- 멱등 : 특정 메서드를 여러번 호출하여도 결과가 같다.

--------------------------------------------------------------------

- GET, HEAD : Safe하면서, 멱등하다.
- POST :  리소스의 위치를 지정하지 않았을 때 리소스를 생성하는 등 데이터를 변경하고 새로 생성된 결과를 보내줄 수 있으므로 safe하지도 않고, 멱등하지도 않다.
- PUT : 리소스의 위치를 클라이언트가 알고 있고, 기존 리소스를 새로운 리소스를 대체하므로 동일한 데이터로 요청하면 결과가 같다.
그러므로 safe하지 않지만, 멱등하다.
- DELETE : 클라이언트가 지정한 리소스를 삭제, 즉 수정이 일어나지만 삭제라는 동일한 결과를 제공하므로 safe하지 않지만, 멱등하다.

참고 : https://inf.run/haHk + 내가 이해한대로 생각 정리

 

모든 개발자를 위한 HTTP 웹 기본 지식 - 인프런 | 강의

실무에 꼭 필요한 HTTP 핵심 기능과 올바른 HTTP API 설계 방법을 학습합니다., - 강의 소개 | 인프런...

www.inflearn.com

 

반응형

'네트워크' 카테고리의 다른 글

HTTP API 설계  (0) 2022.03.28
HTTP 메서드 활용  (0) 2022.03.28
HTTP 메서드 종류 및 좋은 API URI 설계  (0) 2022.03.25
HTTP 메시지  (0) 2022.03.25
Stateful, Stateless 차이, 비연결성(connectionless)  (0) 2022.03.25

댓글