[TIL] HTTP 메소드와 멱등성

phdljr·2023년 11월 1일
0

TIL

목록 보기
21/70
post-custom-banner

웹 프로젝트를 개발하다보면, HTTP의 메소드를 사용하게 되는데 주로 GET, POST, PUT, DELETE를 많이 사용해왔었다.

그러나, 멱등성이라는 개념과 또 다른 메소드인 PATCH를 새로 알게 되었다. 이를 통해, HTTP의 여러 메소드를 다시 알아보고 멱등성에 대해 살펴보는 시간을 가져보려고 한다.


멱등성

  • 연산을 여러 번 적용하더라도 결과가 달라지지 않는 성질
  • 멱등성을 지키면 부수 효과(side effect)가 없다.

GET

  • 특정한 리소스를 가져오도록 요청
  • 데이터를 가져올 때만 사용해야 한다.
  • 멱등성을 가짐
  • 요청에 본문이 존재하지 않음
  • 응답에 본문이 존재함

POST

  • 멱등성을 가지지 않음
  • 요청에 본문이 존재함
  • 응답에 본문이 존재함
  • 사용되는 방식
    • 기존 리소스에 주석달기
    • 게시판, 뉴스 그룹, 메일링 리스트나 이와 유사한 시스템에 글 올리기
    • 회원가입 모달로 새로운 사용자 추가하기
    • 양식 전송 결과 등 데이터 블록을 데이터 처리 프로세스에 보내기
    • 이어붙이기 연산을 통한 데이터베이스 확장
    • multipart/form-data 콘텐츠 유형을 사용하는 예시
POST /test.html HTTP/1.1
Host: example.org
Content-Type: multipart/form-data;boundary="boundary"

--boundary
Content-Disposition: form-data; name="field1"

value1
--boundary
Content-Disposition: form-data; name="field2"; filename="example.txt"

value2
--boundary--

PUT

  • 요청 페이로드를 사용해 새로운 리소스를 생성하거나, 대상 리소스를 나타내는 데이터를 대체
  • 문서 전체의 완전한 교체만을 허용
  • 멱등성을 가짐
  • 요청에 본문이 존재함
  • 응답에 본문이 존재하지 않음

DELETE

  • 지정한 리소스를 삭제
  • 멱등성을 가짐
  • 요청에 본문이 존재할 수도 있음(선택)\
    • 단, RFC 7231에 의하면 본문에 데이터를 넣는 것을 비추천함
    • 헤더에 데이터를 넣는 것을 권장
  • 응답에 본문이 존재할 수도 있음(선택)

PATCH

  • PUT 메소드와는 달리, 리소스의 부분적인 수정을 할 때에 사용
  • 멱등성을 가지지 않음
    • 하지만 PATCH를 PUT과 같은 방식으로 사용함으로써 멱등성을 가지게 할 수도 있다.
  • 요청에 본문이 존재함
  • 응답에 본문이 존재함

HEAD

  • 특정 리소스를 GET 메서드로 요청했을 때 돌아올 헤더를 요청
  • 응답은 본문을 가져선 안되며, 본문이 존재하더라도 무시해야 함
    • 그러나, Content-Length처럼 본문 콘텐츠를 설명하는 개체 헤더는 포함할 수 있다.
    • 이 때, 개체 헤더는 비어있어야 하는 HEAD의 본문과는 관련이 없고, 대신 GET 메서드로 동일한 리소스를 요청했을 때의 본문을 설명해야 한다.
  • 멱등성을 가짐
  • 요청에 본문이 존재하지 않음
  • 응답에 본문이 존재하지 않음

참조

https://developer.mozilla.org/ko/

profile
난 Java도 좋고, 다른 것들도 좋아
post-custom-banner

0개의 댓글