📚 Computer Science/Network

[모든 개발자를 위한 HTTP 웹 기본 지식] 4. HTTP 메서드 - HTTP 메서드의 속성

ryang x2 2023. 8. 11. 17:48
728x90
반응형

인프런 김영한님 [모든 개발자를 위한 HTTP 웹 기본 지식] 강의를 듣고 정리한 내용입니다.😊😊

 

1. HTTP 메서드의 속성

안전(Safe Methods)

멱등(Idempotent Methods)

캐시가능(Cacheable Methods)

 

👉 안전 (Safe)

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

✔ 안전 메서드 ✔

 - 안전O: GET, HEAD

 - 안전X: POST, PUT, PATCH, DELETE

 

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

 - 사용자1: GET -> username:A, age:30 -> 사용자2의 영향으로 바뀐 데이터 조회

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

 

 

👉 캐시 가능 (Cacheable)

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

  - ex) 웹 브라우저에서 큰 이미지를 요청하면 다음에 또 같은 리소스 서버에 요청할 필요가 없다. 즉, 내 로컬 PC에 웹 브라우저가 리소스를 저장하고 이후에 같은 요청이 들어오면 서버에 요청을 하지 않는다.

캐시O : GET, HEAD, POST, PATCH 

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

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

 

 

728x90
반응형