jhhan의 블로그

HTTP 메서드(2) 본문

HTTP

HTTP 메서드(2)

jhhan000 2022. 1. 16. 12:30

이번 포스트도 HTTP에 대해서 다뤄보려고 합니다.

 

저번에는 HTTP 메서드가 무엇이 있는지 알아봤으니

이번에는 HTTP 메서드 별 속성에 대해 조금만 더 알아보려고 합니다.

 

HTTP 메서드의 속성 중 3개에 대해서 알아보겠습니다.

  • Safe Methods(안전)
  • Idempotent Methods(멱등)
  • Cacheable Methods(캐시 가능)

 

1. Safe Methods(안전)

'안전'에 관한 속성은 메서드를 호출해도 리소스 변경이 일어나는가에 대해 입니다.

GET YES
POST NO
PUT NO
PATCH NO
DELETE NO

GET은 단순히 데이터를 불러오기만 하기 때문에 리소스 변경이 일어나지 않습니다.

그 외에 다른 메서드들은 리소스 변경이 일어나죠(등록, 수정, 삭제 ..)

 

Q: 만약 계속 호출해서, 로그가 쌓이는 것 등으로 장애가 일어나면?

→ '안전'의 경우 해당 리소스만 고려합니다. 
    로그 같은 것들은 그 외의 경우이므로 그런 부분까지 고려하지 않음

 

2.  Idempotent Methods(멱등)

한글 번역이 멱등이라서 이해가 잘 안 갈 수도 있습니다.

즉, F(F(X)) = F(X) 인 경우입니다. (수학.. ㅎㅎ)

1번 호출하든, 2번 호출하든, 1000번 호출하든 결과가 동일한가에 대해 입니다.

GET YES
POST NO
PUT YES
PATCH NO
DELETE YES
  • GET: 1번이든 여러번이든 같은 결과를 조회합니다.
  • PUT: 1번 호출하면 생성하고, 2번 이상 호출하면 대체할 것입니다. → 멱등 O
  • DELETE: 1번이든 1000번이든 삭제된 결과는 같습니다. → 멱등 O
  • POST: 여러 번 호출하면 여러번 등록이 됩니다. → 멱등 X
  • PATCH도 그렇다고 하네요..

 

※ 외부 요인으로 인해 중간에 리소스가 변경되는 것은 고려하지 않음

 

3. Cacheable Methods(캐시 가능)

캐싱이 되는지에 대한 여부입니다.

GET YES
POST YES...
PUT NO
PATCH YES...
DELETE NO

일단은 (이론) GET, POST, PATCH가 캐싱이 된다고 하지만...

실제로는 GET 만 캐싱이 가능하다고 합니다.

→ POST, PATCH는 캐싱을 하려고 하면 꽤 복잡하다고 합니다. (구현이 어려움)

 

 

HTTP 메서드는 클라이언트에서 서버로 데이터 전송을 가능하게 합니다.

이 때 데이터 전달 방식은?

  1. 쿼리 파라미터(쿼리 스트링)를 통한 전송
    • GET
  2. 메시지 바디를 통한 전송
    • POST, PUT, PATCH

 

 

 

이렇게 해서 HTTP 메서드의 특징에 대해서 알아봤습니다.

 

 

 

출처 : 모든 개발자를 위한 HTTP 웹 기본지식 by 김영한

'HTTP' 카테고리의 다른 글

HTTP 헤더 & 바디  (0) 2022.01.22
HTTP 메서드(3)  (0) 2022.01.16
HTTP 메서드  (0) 2022.01.16
HTTP 메시지  (0) 2021.12.12
HTTP 알아보기  (0) 2021.12.12