(Web) HTTP 메서드의 종류와 특징

Dragon·2024년 1월 29일

위클리 페이퍼

목록 보기
9/18
post-thumbnail

HTTP 메서드란?

클라이언트와 서버 사이에 이루어지는 요청(Request) 와 응답(Response) 데이터를 전송하는 방식을 일컫는다. 보통, 클라이언트 입장에서 서버가 데이터를 어떻게 처리해주길 원하는지에 대한 방식을 말한다. HTTP 메서드는 총 9개가 존재한다. 일반적으로 리퀘스트나 리스폰스의 Headers 부분의 'method' 항목에서 확인이 가능하다.

HTTP 메서드의 종류

GET

  • 리소스를 조회하는 메서드로, 데아터를 가져올 때만 사용한다.
  • 리소스 위치에 해당하는 URL 을 통해 서버에 리소스를 요청한다.
  • 검색과 같은 동적 데이터 조회는 URL 뒤쪽의 key=value&key=value 형태의 쿼리 파라미터를 조작한다.
  • 데이터를 조회만 하므로, 클라이언트 입장에선 보낼 데이터가 없기 때문에 Body 는 비워서 보낸다.
  • 동일한 요청을 여러 번 보내도 같은 결과를 받고, 서버의 상태도 동일하게 남는 경우, '멱득성'을 가졌다고 말하는데, GET 메서드는 멱등성을 가진다.

POST

  • 새로운 리소스를 생성하는 메서드로, 게시판에 새로운 글을 올리는 등의 작업을 수행하기 위해 사용한다.
  • 생성하고 싶은 데이터를 Request 의 Body 부분에 JSON 데이터 형식으로 담아서 보내게 된다.
  • 추가할 데이터의 타입을 Headers 의 Content-Type 에 작성한다.
  • 멱등성을 가지지 않는다.

PUT

  • 기존의 리소스를 대체하기 위해 사용하는 메서드로, 기존의 직원 정보를 새로운 직원으로 정보로 교체하는 등의 작업에 사용한다.
  • 대체할 구체적인 데이터에 접근해야 하므로, URL 의 쿼리 부분을 /members/2 와 같이 조작한다. 쿼리의 형식은 서버마다 다를 수 있다.
  • 새로 대체될 내용을 Body 부분에 JSON 데이터 형식으로 담아서 보낸다.
  • 여러 번 보내도 부수 효과가 없으므로, 멱등성을 가진다.

DELETE

  • 기존의 리소스를 삭제하기 위해 사용되는 메서드로, 퇴사한 직원 정보를 삭제하는 등의 작업에 사용된다.
  • URL 위치의 특정 리소스를 삭제하며, Body 부분은 비워서 보낸다.
  • 여러 번 보내도 부수 효과가 없으므로, 멱등성을 가진다.

PATCH

  • PUT 과 같이 데이터를 수정하는데 사용되지만, 리소스를 부분 대체한다는 점에서 차이가 있다.
  • 예를 들어 한 직원의 '나이' 정보만 Body 에 JSON 형태로 담아 보내, '나이' 정보만 대체하는 것이 가능하다. 하지만 PUT 의 경우에 '나이' 정보를 수정하기 위해선 해당 직원의 정보를 전부 대체해야 한다.
  • PUT 과 달리 멱등성은 가지지 않는데, 이는 동일한 PATCH 요청이 다른 결과를 야기할 수도 있음을 의미한다.
  • GET 과 동일하지만, 해당 리소스 자체가 아닌 HEAD 부분만을 리스폰스로 받는다.
  • 해당 리소스의 용량이 너무 큰 경우와 같이, 리소스의 정보만을 받아보고 싶을 때 사용한다.
  • 리퀘스트의 Body 는 GET 과 마찬가지로 필요하지 않다.
  • GET 메서드와 같이 멱등성을 가진다.

TRACE

  • 대상 리소스에 대한 경로를 따라 메시지 루프백 테스트를 수행하여, 유용한 디버깅 메커니즘을 제공한다.
  • 테스트 용 메서드로, 클라이언트는 요청 패킷을 리퀘스트로 서버에 보내고, 이를 수신한 서버는 '200(OK)' 의 Status Code 를 가진 리스폰스에 최종 패킷을 담아 보낸다.
  • 클라이언트의 요청 패킷이 방화벽, Proxy 서버, Gateway 등을 거치며 변조가 일어날 수 있는데, 이를 리스폰스의 최종 패킷과 비교하며 변조 유무를 확인한다.
  • 여러 번 보내도 부수 효과가 없으므로, 멱등성을 가진다.

OPTION

  • URL 또는 서버에 대해 독립적인 통신 옵션을 요청하기 위한 메서드이다.
  • 서버의 지원 가능한 HTTP 메서드와 출처를 응답받아 CORS 정책을 검사하기 위한 요청에 쓰인다.
  • 여러 번 보내도 부수 효과가 없으므로, 멱등성을 가진다.

CONNECT

  • 요청한 리소스에 대해 양방향 연결을 시작하는 메서드이고, 터널을 열기 위해 사용될 수 있다.
  • 예를 들어, 클라이언트가 원하는 목적지와의 TCP 연결을 HTTP 프록시 서버에 요청하고, 그에 대한 응답으로 서버는 클라이언트를 대신하여 연결의 생성을 진행할 수 있다. 한번 서버에 의해 연결이 수립되면, 프록시 서버는 클라이언트에 오고가는 TCP 스트림을 계속 프록시하게 된다.
  • 멱등성은 가지지 않는다.
profile
2024년부터 시작하는 프론트엔드 개발 공부

0개의 댓글