jhhan의 블로그

HTTP 메서드 본문

HTTP

HTTP 메서드

jhhan000 2022. 1. 16. 11:07

이번 포스트에서는 HTTP 메서드에 대해 알아보겠습니다.

 

사실 이번 주제는 제가 예전부터 계속 알아보려고 했던 것이기도 하고

한번 정리를 해두어야 한다는 느낌이 있었습니다.이제와서 이런 글을 써보게 됩니다.

 

HTTP 메서드는 주로 사용하는 것만을 본다면총 5가지를 사용합니다.

  • GET
  • POST
  • PUT
  • PATCH
  • DELETE

 

1. GET

  • GET 메서드는 조회 용도로 사용됩니다.
  • (데이터를 불러오는 역할)
  • 서버에 전달할 데이터를 URL에 포함해서 전송
    → query를 보낸다고도 함(쿼리 파라미터 , 쿼리 스트링)
    → URL에 포함해서 전송하기 때문에 대용량 데이터 전송은 힘들다.
  • Body에 데이터를 담아 보낼 수도 있지만, 지원하지 않는 곳이 있음 → 권장 X
  • 캐싱 사용 가능
  • 리소스 조회

 

2. POST

POST 와 PUT은 이름도 비슷하고 기능도 비슷해보여서 계속 헷갈렸습니다.

이 글을 쓰면서 차이점에 대해 좀 더 명확하게 알게 되었네요.

  • 서버의 값이나 상태를 바꾸기 위한 메서드
  • 요청 데이터를 처리함
  • Body를 통해 데이터 전송 → 대용량 데이터 전송 가능
  • 전달된 데이터를 통해 신규 리소스 등록 OR 프로세스 처리에 사용됩니다.

POST의 경우 주로 등록과 관련된 부분에 많이 쓰인다고 볼 수 있습니다.

또한 데이터를 처리하는 경우에도 사용됩니다.

(그래서 등록 뿐만 아니라 수정, 삭제 등에도 사용이 가능합니다.)

혹은 이 프로세스를 어떻게 처리해야할지 헷갈리는 경우 POST를 사용해서 프로세스를 처리할 수 있다고 합니다.

(HTTP 메서드 중 무엇을 써야할 지 헷갈리는 경우 POST 메서드를 써도 됩니다.)

 

3. PUT

POST 와 PUT은 이름도 비슷하고 기능도 비슷해보여서 계속 헷갈렸습니다.

  • 리소스가 있으면 생성
  • 리소스가 없으면 대체
  • 즉, 리소스를 덮어쓰기 해버림
  • 그래서 '수정'에 사용가능
    → 대신 수정을 할 경우 모든 데이터를 보내줘야 함!
    → 그렇지 않으면 이상하게 수정이 될 가능성 있음

PUT메서드는 수정에 사용되는 용도로 알고 있었습니다. (일부는 맞습니다.)

PUT은 기존 리소스를 덮어쓰기 해버립니다.

그래서 기존에 데이터가 없다면 생성을 하고, 있다면 대체합니다.

 

3-1. 대체한다는 것에 대해 예시를 들어 설명하겠습니다.

서버에 데이터가 아래와 같이 저장되어 있고

{
    "userName" : "tistory",
    "age"      : 10
}

PUT 메서드를 사용할 경우

// PUT
PUT "/members/100"
{
    "userName" : "logitech"
}

그러면 결과는?

{
    "userName" : "logitech"
}

이렇게 대체됩니다.

그러면 이 데이터의 경우 age라는 항목의 데이터 값을 잃어버립니다.

 

PUT은 대체해버리기 때문에 수정되지 않는 값과 수정되는 값을 모두 보내줘야

문제가 생기지 않습니다.

 

3-2. 이제 POST와 PUT에 대해 좀 더 알아봅시다.

POST의 경우

// POST
POST "/members"
{
    "userName" : "tistory",
    "age"      : 30
}

이런 방식으로 데이터를 전송하고

새로운 멤버(유저, 회원, 등등)를 생성합니다.

PUT의 경우

// PUT
PUT "/members/100"
{
    "userName" : "tistory",
    "age"      : 30
}

이런 방식으로 데이터를 전송하고

멤버(유저, 회원, 등등)를 생성하거나 대체합니다.

차이점은

  • POST는 리소스의 위치를 모릅니다. 그래서 보내는 주소가 "/members" 입니다.
  • PUT은 리소스의 위치를 압니다. 그래서 보내는 주소가 "/members/100" 입니다.
  • 그래서 POST는 서버가 알아서 처리해주지만, PUT은 클라이언트가 지정해줘야 합니다.

 

4. PATCH

  • PATCH는 PUT과 비슷하게 수정의 역할을 합니다.
  • 대신 PATCH는 부분 수정이 가능합니다.
  • 리소스 부분 변경

 

예시를 들어서 설명해봅니다.

아래와 같은 데이터가 존재하고

{
    "userName" : "tistory",
    "age"      : 10
}

PATCH 메서드를 사용할 경우

// PATCH
PATCH "/members/100"
{
    "age" : 40
}

결과는?

{
    "userName" : "tistory",
    "age"      : 40
}

age만 수정이 됩니다.

 

그래서 수정을 하는 경우 PATCH를 사용하는 것이 좀 더 효율적이라고 볼 수 있습니다.

 

5. DELETE

  • 리소스 제거
  • 단어 그대로 삭제를 합니다.

이 메서드는 굳이 추가 설명을 하지 않아도 될 것 같습니다.

 

 

HTTP 메서드에 대해 알아봤습니다.

아무래도 POST 와 PUT에 대해서 잘 이해하면 좋을 것 같습니다.
(개인적인 생각임..)

 

 

 

 

 

 

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

'HTTP' 카테고리의 다른 글

HTTP 메서드(3)  (0) 2022.01.16
HTTP 메서드(2)  (0) 2022.01.16
HTTP 메시지  (0) 2021.12.12
HTTP 알아보기  (0) 2021.12.12
웹 브라우저의 요청과 흐름  (0) 2021.11.23