티스토리 뷰

728x90
반응형

HTTP 메서드에 알아보기전 안정성, 멱등성, 캐시가능성에 대해 먼저 알아보겠습니다.

 

안정성이란?(Safe)


  • HTTP는 안전한 메서드라고 불리는 메서드의 집합입니다.
  • 안전한 메서드의 목적은 서버에 어떠한 영향을 줄 수 있는 안전하지 않은 메서드가 사용될 때 사용자들에게 그 사실을 알려주는 것입니다.
  • 읽기 전용인 메서드인 경우 안전한 메서드로 간주합니다.
    • GET, HEAD, OPTIONS은 안전한 메서드로 정의되어 있습니다.
  • 디버깅용 메서드 TRACE로 클라이언트 쪽에 공격을 시도하여 쿠키 및 웹 사이트 자격증명을 포함한 정보를 훔칠 수도 있기 때문에 안전하지 않는 메서드입니다.

 

캐시가능성이란?(Cachable)


  • 향후 재사용을 위해 이에 대한 응답을 저장할 수 있음을 나타낼 수 있습니다.
  • 일반적으로 현재 시점의 응답이나 권한이 있는 응답에 의존하지 않는 안전한 메서드는 캐시 가능한것으로 정의합니다.
    • GET, HEAD, POST

 

멱등성이란?(Idempotent)


  • 멱등성이란 수학에서 사용하는 용어에서 유래한 것으로 연산을 여러번 적용하더라도 결과가 달라지지 않는 성질을 뜻합니다.
  • 쉽게 말하자면 동일한 요청을 한 번 보내는 것과 여러 번 연속적으로 보내는 것이 같은 효과를 지니고 서버의 상태도 동일하게 남을 때 해당 HTTP 메서드가 멱등성을 가졌다고 말합니다. 
  • HTTP 메서드 GET, POST, PUT, DELETE 중 POST를 제외하고는 모두 멱등성이 보장되어야 합니다.

 

무엇으로 멱등성을 판단할까?


  • 멱등성은 요청의 효과를 보고 판단합니다.
  • 서버의 상태가 멱등성이 유지되어야 하는 경우 같은 행위를 여러번 반복하더라도 같은 효과를 가져야 합니다. 멱등성이 성립하지 않으면 같은 행위를 여러번 반복하더라도 각 요청마다 다른 효과가 발생하게 됩니다.

 

예시


  • GET kdg-is/1은 멱등성을 가집니다.
  • 여러번 연속적으로 호출해도 클라이언트가 받는 응답은 동일합니다.
요청 --> GET /kdg-is/1
요청 --> GET /kdg-is/1
요청 --> GET /kdg-is/1

 

  • POST kdg-is/insert는 멱등성을 갖지 않습니다.
  • 여러번 연속적으로 호출할 경우 여러 열을 추가하게 됩니다.
요청 --> POST /kdg-is/insert/
요청 --> POST /kdg-is/insert/
요청 --> POST /kdg-is/insert/

 

  • DELETE /kdg-is/delete/1의 상태 코드는 응답마다 달라질 수는 있지만 그럼에도 멱등성을 가집니다.
요청 --> DELETE /kdg-is/delete/1   --> Returns 200
요청 --> DELETE /kdg-is/delete/1   --> Returns 404 // 방금 삭제되었으므로 404 리턴
요청 --> DELETE /kdg-is/delete/1   --> Returns 404 // 삭제할 데이터가 없으므로 404 리턴
728x90
반응형

'Network' 카테고리의 다른 글

TCP 커넥션 관리  (0) 2023.04.04
HTTP 메시지  (0) 2023.03.26
URL과 리소스  (0) 2023.03.18
HTTP에 대해  (0) 2023.03.18
Network - TCP-UDP란(feat. 3 way hand shake, 4 way hand shake)  (2) 2022.01.04