본문 바로가기
IT 공부/새로운 시작

HTTP(7) - HTTP 메서드을 알아보자(1)

by 수박한암살자 2021. 10. 20.

GET

리소스 조회 시 사용한다.

전달하고 싶은 데이터는 query parameter 또는 query string으로 전송할 수 있다.

하지만 메시지 바디로도 데이터를 넣어 전송할 수 있다! 하지만 아직 지원하지 않는 서버가 많지 않다.

POST

요청 데이터를 처리하는 메서드다. 주로 메시지 바디를 통해 서버로 요청 데이터를 전달한다.

주로 신규 리소스 등록, 프로세스 처리를 담당. 필요하다면 수정도 하는 만능 메서드의 느낌이 강하다.

 

왜냐하면 애초에 요청 데이터를 처리한다는 점에서 해석이 다소 포괄적일 수 있고

따라서 요청 데이터를 어떻게 처리할지 리소스마다 따로 정해야 한다.

개발을 하다보면 다른 메서드로 처리하기 애매할 경우 쓰이기도 한다.

 

그리고 생성한 리소스를 location 헤더에 넣어 응답하기도 한다.

PUT

리소스를 대체하는 메서드다. 하지만 해당 리소스가 없다면 생성하는 역할도 한다.

엇, POST도 생성하지 않나? 그렇다면 POST와의 차이점을 확인해보자.

중요한 차이점은 PUT은 리소스를 식별한다는 점이다. 식별한다는 것은 어떤 의미인가?

  • POST
    POST /members HTTP/1.1
    {
      "username":"young",
      "age":20
    }
  • PUT
    PUT /members/100 HTTP/1.1
    {
      "username":"young",
      "age":20
    }

위와 같이 PUT은 100이라는 member 리소스에 넣겠다. 하지만 없으면 대체하겠다. 라는 의미를 갖는다.

 

주의할 점은 PUT은 완벽한 업데이트가 아니다.

만약 아래와 같은 요청이 간다면?

PUT /members/100 HTTP/1.1
{
  "age":50
}

100의 리소스의 age만 50으로 수정될 것 같지만 아니다. 엄밀히 따지면 PUT은 요청한 데이터러 리소스를 대체하는 것이기 때문이다.

일부 데이터만 50으로 수정하고 싶다면 PATCH 메서드를 사용하면 된다. 물론 PUT 내에서 서버 로직으로 풀어내는 것도 가능하지만...

PATCH

리소스의 부분 변경이 가능하다. 위 PUT 설명 마지막 부분을 참고하자.

DELETE

리소스를 제거하는 메서드다. 

 


PUT 메서드에 대해서는 자세히 모르고 있었는데 개념을 확실히 익힐 수 있었다.

PATCH 메서드는 새롭게 나온 메서드라고 한다.

또한 PATCH 메서드는 못 받아들이는 서버도 존재하기 때문에 이럴 땐 POST(만능 느낌)를 쓰면 된다.

 

메서드 쪽은 좀 더 개발 쪽에 접근한 느낌이라 재밌지만

일상 생활에 비유하여 설명하기엔 그럴 껀덕지는 없는 것 같다.ㅡㅡ;

 

다음 글에서는 HTTP 메서드의 속성에 대해 알아보겠다.

반응형

댓글