[HTTP] HTTP 메서드의 속성 이해하기

woply·2022년 1월 25일
0

TIL(Today I Learn)

목록 보기
29/31

📖 ✏️

  1. TIL 시리즈에 작성된 글은 '매일 매일 학습한 지식 조각을 메모해 놓은 포스팅'입니다. 공유가 아닌 개인적인 학습 내용 기록을 목적으로 작성되었음을 알려드립니다.
  2. 그 외 시리즈에 작성된 공유 목적의 포스팅은 시간이 날 때마다 별도로 작성하고 있습니다. 주로, TIL 시리즈에 작성된 내용에서 특정 주제를 선정하고, 더 깊이 공부한 후 정리하여 작성합니다.

HTTP 메서드의 속성 이해하기

HTTP 메서드는 크게 3가지 속성을 통해 구분할 수 있다. HTTP 메서드의 속성을 알아두면, 특정 메서드를 사용함에 있어 리소스 변화를 예측하고 올바르게 사용할 수 있다. 또한 메서드의 로직을 구현할 때, 해당 속성을 반영해야 한다.

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


1. 안전 Safe

호출했을 때 변경이 일어나지 않으면, 안전하다고 볼 수 있다. 변경의 범위는 리소스에 한정한다. 로그가 쌓이거나, 중간에 외부 요인으로 리소스가 변경되거나, 페이지 조회수처럼 외부의 특정한 값이 증가되는 것은 고려하지 않는다.

2. 멱등 Idempotent

멱등은 f(f(x)) = f(x)로 함축적 표현이 가능하다. 한 번 호출하든 두 번 호출하든 100번 호출하든 결과가 똑같음을 의미한다. 판단의 근거는 서버가 TIMEOUT 등으로 정상 응답을 주지 못했을 때, 클라이언트가 같은 요청을 해도 괜찮은지를 생각해보면 된다.

값의 변경 없이 리소스를 조회하는 GET, 결과를 완전히 대체하는 PUT, 리소스를 삭제하는 DELETE가 대표적인 멱등 속성을 가지고 있다. 여러번 같은 메서드를 호출해도 결과가 동일하다. 따라서 멱등하다.

POST는 멱등 속성이 아니다. 두 번 호출하면 같은 결제가 중복해서 발생할 수 있다.

PATCH는 멱등으로 설계할 수도 있지만, 멱등이 아니게도 설계할 수 있다. 예를 들어 특정한 값으로 대체하는 경우는 멱등하다. 하지만 호출마다 10을 더하는 방식의 로직이 구현되어 있다면 멱등하지 않다. PATCH는 리소스의 특정 부분을 변경하는데, 변경되는 로직에 따라 멱등 속성 여부가 달라진다.

3. 캐시가능 Cacheable

응답 결과 리소스를 캐시해서 사용할 수 있는지에 따라 속성이 결정된다. GET, HEAD, POST, PATCH는 캐시가능하다. 하지만, 실제로는 GET, HEAD 정도만 캐시로 사용한다. POST, PATCH는 본문 내용까지 캐시 키로 고려해야 하는데, 구현이 쉽지 않기 때문이다.

profile
7년간 마케터로 일했고, 현재는 헤렌에서 백엔드 개발자로 일하고 있습니다. 고객 가치를 설계하는 개발자를 지향하며, 개발, 독서, 글쓰기를 좋아합니다. 업이 심오한 놀이이길 바라는 덕업일치 주의자입니다.

0개의 댓글