HTTP Method에 대하여

티라노·2023년 10월 8일
0
post-custom-banner

HTTP 메소드는 클라이언트와 서버 사이에 이루어지는 request와 response 데이터를 전송하는 방식으로, 클라이언트가 웹 서버에게 사용자 리퀘스트의 목적이나 종류를 알리는 수단이다. 즉, 서버가 수행해야 할 동작을 지정하여 요청을 보내기 위해 사용한다.

  1. GET : 리소스를 조회
  2. PUT : 리소스를 대체(덮어쓰기), 해당 리소스가 없으면 생성
  3. POST: 요청 데이터 처리, 주로 등록에 사용
  4. PATCH : 리소스 부분 변경 (PUT이 전체 변경, PATCH는 일부 변경)
  5. DELETE : 리소스 삭제

HTTP 메소드는 총 9가지의 종류가 있는데, 그 중 주로 쓰이는 5가지 메소드를 위주로 HTTP 메소드를 공부해보자.


1. GET

: 리소스 조회 메서드로, 서버에 조회할 Resource를 요청한다.

  • Resource를 받아오는 메소드이기 때문에, 서버의 데이터 변경이 일어나지 않는다.

기타 메소드. HEAD

GET과 동일하지만 서버에서 메시지 부분(body 부분)을 제외하고, 상태 줄과 헤더만 반환 (즉, 서버에서 Body를 Return 하지 않는다)

  • Resource를 받지 않고 오직 찾기만 원할때
  • object가 존재할 경우 응답의 상태 코드를 확인할때
  • 서버의 응답 헤더를 봄으로써 Resource가 수정 되었는지 확인

2. PUT

: 새로운 리소스를 생성하거나 기존 리소스를 수정하기 위해 서버에 데이터를 보내는 메소드. 즉, 서버에 문서를 쓸 때 사용하는 메소드로, GET과 반대의 역할을 한다.

  • 서버가 Client가 요청한 Body를 확인하고,
    1. 요청된 URL에 정의된 새로운 Resource를 생성하기 위함 (서버에 리소스가 없을 경우, 리소스를 생성)
    2. 요청된 URL이 존재할 경우 대체하여 사용 (서버에 리소스가 있을 경우, 클라이언트가 보낸 데이터로 대체)

3. POST

: 새로운 리소스를 생성하거나 기존 리소스를 수정하기 위해 서버에 데이터를 보내는 메소드. Server에 Input Data를 보내기 위해 사용한다. (HTML form에 많이 사용)

  • 보통 캐시되지 않음.
  • 리소스 생성할 경우, 이미 리소스가 있더라도 새로운 리소스를 생성함.
  • 서버의 데이터 변경이 일어날 수 있습니다.
  • POST으로 동일한 리퀘스트를 반복하면 동일한 응답을 보장할 수 없음.

PUT vs. POST

  • PUT은 서버의 Resource에 Data를 저장하기 위한 용도
  • POST는 서버에 DATA를 보내기 위한 용도

4. PATCH

: 기존 리소스의 부분적인 수정을 위한 메소드

PUT 리퀘스트는 데이터를 완전히 대체하는 것이라면, PATCH는 부분 수정을 위한 메소드이다.

{
    id: 'kde9889',
    name: '김다은',
    password: '1234'
}

위와 같은 데이터에서
1. id, name, password 전체를 생성 또는 변경하는데는 PUT을 사용하고,
2. 기존에 있던 데이터에 password만 변경할 때는 PATCH를 사용한다.


5. DELETE

: 지정한 리소스를 삭제하는 메소드

  • 삭제할 Resource를 서버에 전달하여 서버의 데이터를 삭제를 요청한다.
  • 그러나, HTTP 규격에는 Client의 요청에도 서버가 무효화 시킬수 있도록 정의되어 있어 DELETE Method가 항상 보장되지는 않는다.


기타 메소드

TRACE

: 대상 리소스에 대한 경로를 따라 메시지 루프백 테스트를 수행한다.
Client로 부터 Request Packet이 방화벽, Proxy Server, Gateway등을 거치면서 packet의 변조가 일어날 수 있는데, 이 때 Server에 도달 했을 때의 최종 Packet의 Request Packet을 볼수 있다.

  • 즉, Original Data와 서버에 도달했을 때의 비교본 Data를 서버의 응답 Body를 통해 확인 할 수 있다.
  • 요청의 최종 수신자는 반드시 송신자에게 200(OK) 응답의 내용(Body)로 수신한 메세지를 반송해야 한다.
  • 최초 Client의 요청에는 Body가 포함될수 없다.

OPTIONS

: 대상 리소스에 대한 통신 가능 옵션(메서드)을 설명(주로 CORS에서 사용)
Target Server의 지원 가능한 method(ex> GET, POST …)를 알아보기 위해 사용한다.

CONNECT

: 대상 자원으로 식별되는 서버에 대한 터널을 설정한다.
요청한 리소스에 대해 양방향 연결을 시작하는 메소드로, SSL을 사용하는 웹사이트(HTTPS)에 접속하는데 사용될 수 있다.



References
1. inpa Dev
2. Codeit 자바스크립트 웹 개발 기본기
3. medium

profile
어쩌다 프론트 도전기
post-custom-banner

0개의 댓글