WEB HTTP/HTTP 기본

HTTP 메서드속성 - 안전, 멱등, 캐시가능

진이최고다 2023. 3. 19. 23:28

HTTP메서드 속성

출처:HTTP - 위키백과, 우리 모두의 백과사전 (wikipedia.org)


"안전(Safe Methods)"

안전 메서드는 서버의 리소스를 변경하지 않는 것으로 정의된다. 클라이언트가 서버에게 안전 메서드를 요청해도 서버는 동일한 응답을 반환받게된다.

  • GET: 서버에서 리소스의 표시를 요청.
  • HEAD: GET과 동일하지만, 서버는 리소스에 대한 메타 정보만 반환.
  • OPTIONS: 서버에서 지원하는 메서드의 종류와 리소스에 대한 지원 가능한 기능을 반환.
💡 안전 속성은 해당 리소스를 변경하지 않으며, 서버 상태나 데이터를 변경하지 않는 것을 의미한다.
하지만 여러 번 요청을 보내는 것으로 인해 로그가 쌓이는 등의 부작용이 발생할 수 있는데.  안전 속성은 서버의 로그나 기타 상태 정보 등을 고려하지 않는다.

 


"멱등 (Idempotent)"

멱등 메서드는 같은 요청을 여러 번 보내더라도 동일한 결과가 나타나는 것으로 정의된다.즉, 서버에서 리소스를 변경하더라도 같은 결과가 나온다.

  • GET: 한 번 조회하든 두 번 조회하든 같은 결과가 조회된다.
  • PUT: 같은 요청을 여러 번 보내더라도, 리소스가 대체되기때문에 최종 결과는 같게 된다.
  • DELETE: 같은 요청을 여러 번 보내더라도 삭제된 결과는 똑같다.
  • POST멱등이 아니다! 두 번 호출하면 같은 결제가 중복해서 발생할 수 있다

활용💡

멱등 속성은 여러 가지 활용이 가능하다. 예를 들어, 자동 복구 메커니즘에 활용될 수 있는데 만약 클라이언트가 멱등한 요청을 보낸 후 서버가 TIMEOUT 등으로 정상 응답을 주지 못하고 실패한 경우, 클라이언트는 같은 요청을 다시 보내어 자동으로 복구할 수 있디. 이는 서버와 클라이언트 간의 신뢰성을 높일 수 있는 중요한 기능을 뜻한다.

 


"캐시 가능(Cacheable)"

캐시 가능은 클라이언트나 중간 캐시 서버에 해당 리소스를 저장하고 재사용할 수 있는지 여부를 나타낸다.

GET, HEAD, POST, PATCH 등의 메서드 중에서도, 실무에서는 GET, HEAD 메서드가 캐시에 사용되는 경우가 대부분이다. POST, PATCH 메서드의 경우에도 캐시에 저장할 수 있지만, 본문 내용까지 캐시 키로 고려해야하므로 구현이 쉽지 않다.

 

 

 

 

출처 : 인프런 - 모든 개발자를 위한 HTTP 웹 기본지식 by 우아한형제 김영한이사님