티스토리 뷰

728x90

HTTP Method 란?

HTTP 메서드란 클라이언트와 서버 사이에 이루어지는 요청(Request)과 응답(Response) 데이터를 전송하는 방식을 일컫는다. 쉽게 말하면 서버에 주어진 리소스에 수행하길 원하는 행동, 서버가 수행해야 할 동작을 지정하는 요청을 보내는 방법이다.

 

  • 주요 메소드
    • GET : 리소스 조회
    • POST:  요청 데이터 처리, 주로 등록에 사용
    • PUT : 리소스를 대체(덮어쓰기), 해당 리소스가 없으면 생성
    • PATCH : 리소스 부분 변경 (PUT이 전체 변경, PATCH는 일부 변경)
    • DELETE : 리소스 삭제
  • 기타 메소드
    • HEAD : GET과 동일하지만 메시지 부분(body 부분)을 제외하고, 상태 줄과 헤더만 반환
    • OPTIONS : 대상 리소스에 대한 통신 가능 옵션(메서드)을 설명(주로 CORS에서 사용)
    • CONNECT : 대상 자원으로 식별되는 서버에 대한 터널을 설정
    • TRACE : 대상 리소스에 대한 경로를 따라 메시지 루프백 테스트를 수행

 

Get

  • 리소스 조회 메서드 (Read)
  • 만일 틀서버에 전달하고 싶은 데이터는 쿼리스트링를 통해서 전달
  • ex) GET /members/100?username=inpa&height=200
  • 쿼리스트링 외에 메시지 바디를 사용해서 데이터를 전달할 수 있지만, 서버에서 따로 구성해야 되기 때문에 지원하지 않는 곳이 많아서 권장하지 않음
  • 조회할 때 POST도 사용할 수 있지만, GET 메서드는 캐싱이 가능하기에 GET을 사용하는 것이 유리하다.
  • 데이터를 조회하는 것이기 때문에 요청시에 Body 값과 Content-Type 가 비워져있다. 조회할 데이터에 대한 정보는 URL을 통해서 파라메터를 받고 있는 모습을 볼 수 있다.
  • 데이터 조회에 성공한다면 Body 값에 데이터 값을 저장하여 성공 응답을 보낸다.

 

Post

  • 전달한 데이터 처리/생성 요청 메서드 (Create)
  • 메시지 바디(body)를 통해 서버로 요청 데이터 전달하면 서버는 요청 데이터를 처리하여 업데이트
  • 전달된 데이터로 주로 신규 리소스 등록, 프로세스 처리에 사용
  • 만일 데이터를 GET 하는데 있어, JSON으로 조회 데이터를 넘겨야 하는 애매한 경우 POST를 사용
  • 데이터를 생성하는 것이기 때문에 요청시에 Body 값과 Content-Type 값을 작성해야한다. 
  • URL을 통해서 데이터를 받지 않고, Body 값을 통해서 받는다.
  • 데이터 조회에 성공한다면 Body 값에 저장한 데이터 값을 저장하여 성공 응답을 보낸다.
POST /member
body : {date : "example"}
Content-Type : "application/json"

 

Put

  • 리소스를 대체(수정)하는 메서드 (Update)
  • 만일 요청 메세지에 리소스가 있으면 덮어쓰고, 없으면 새로 생성한다.
    • /members/100 데이터가 존재하면 기존에 것을 완전 대체 한다.
    • /members/100 데이터가 없으면 대체 할게 없으니까 새로 생성한다.
  • 데이터를 대체해야 하니, 클라이언트가 리소스의 구체적인 전체 경로를 지정해 보내주어야 한다.
    • POST /members : 멤버 새로 추가
    • PUT /members/100 : 100번째 멤버 수정
  • 데이터를 수정하는 것이기 때문에 요청시에 Body 값과 Content-Type 값을 작성해야한다.
  • URL을 통해서 어떠한 데이터를 수정할지 파라메터를 받는다. 그리고 수정할 데이터 값을 Body 값을 통해서 받는다.
  • 데이터 조회에 성공한다면 Body 값에 저장한 데이터 값을 저장하여 성공 응답을 보낸다.
PUT /member/1
body : {date : "update example"}
Content-Type : "application/json"

 

DELETE

  • DELETE 메서드는 지정된 리소스를 삭제한다.
  • 데이터를 삭제하는 것이기 때문에 요청시에 Body 값과 Content-Type 값이 비워져있다.
  • URL을 통해서 어떠한 데이터를 삭제할지 파라메터를 받는다.
  • 데이터 삭제에 성공한다면 Body 값 없이 성공 응답만 보내게 된다.
  • ex) DELETE /user/1

 

PATCH

  • 리소스 일부 부분을 변경하는 메소드 (Update)
  • 만일 PATCH를 지원하지 않는 서버에서는 대신에 POST를 사용할 수 있다.

 

HEAD

  • GET과 동일하지만 서버에서 Body를 Return 하지 않음
  • 응답의 상태 코드만 확인할때와 같이 Resource를 받지 않고 오직 찾기만 원할때 사용 (일종의 검사 용도)
  • 서버의 응답 헤더를 봄으로써 Resource가 수정 되었는지 확인 가능

 

TRACE

  • 이 메서드도 일종의 검사용
  • 서버에 도달 했을 때의 최종 패킷의 요청 패킷 내용을 응답 받을 수 있다.
  • 요청의 최종 수신자는 반드시 송신자에게 200(OK) 응답의 내용(Body)로 수신한 메세지를 반송해야 한다.
  • 최초 Client의 요청에는 Body가 포함될수 없다.

 

OPTIONS

  • 예비 요청(Preflight)에 사용되는 HTTP 메소드
  • 예비 요청이란 본 요청을 하기 전에 안전한지 미리 검사하는 것이라고 보면 된다
  • 서버의 지원 가능한 HTTP 메서드와 출처를 응답 받아 CORS 정책을 검사하기 위한 요청이다.

 

 

 

 

 

 

Reference Link

https://velog.io/@yh20studio/CS-Http-Method-%EB%9E%80-GET-POST-PUT-DELETE

https://inpa.tistory.com/entry/WEB-%F0%9F%8C%90-HTTP-%EB%A9%94%EC%84%9C%EB%93%9C-%EC%A2%85%EB%A5%98-%ED%86%B5%EC%8B%A0-%EA%B3%BC%EC%A0%95-%F0%9F%92%AF-%EC%B4%9D%EC%A0%95%EB%A6%AC

 

 

728x90