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 우아한형제 김영한이사님