HTTP Request Methods

코드 속의 "진돌"·2023년 12월 3일
0

Web

목록 보기
3/7
post-thumbnail

HTTP Method ?


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

HTTP 메서드의 종류는 총 9가지가 있다. 이중 주로 쓰이는 메서드는 5가지로 보면 된다.

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

✏️ 기타 메서드
HEAD : GET과 동일하지만 메시지 부분(body 부분)을 제외하고, 상태 줄과 헤더만 반환
OPTIONS : 대상 리소스에 대한 통신 가능 옵션(메서드)을 설명 (주로 CORS에서 사용)
CONNECT : 대상 자원으로 식별되는 서버에 대한 터널을 설정
TRACE : 대상 리소스에 대한 경로를 따라 메세지 루프백 테스트를 수행


1. GET

  • 리소스 조회 메서드 (Read)
  • GET을 사용하는 요청은 데이터를 받기만 하며 URL(URI) 형식으로 웹 서버 측에 리소스를 요청
  • 서버에 전달하고 싶은 데이터는 쿼리스트링을 통해서 전달
    GET /members/100?username=inpa&height=200
  • 쿼리스트링 외에 메세지 바디를 사용해서 데이터를 전달할 수 있지만, 서버에서 따로 구성해야 되기 때문에 지원하지 않는 곳이 많아서 권장하지 않음
  • 조회할 때 POST도 사용할 수 있지만, GET 메서드는 캐싱이 가능하기에 GET을 사용하는 것이 유리함.

2. POST

  • 전달한 데이터 처리/생성 요청 메서드 (Create)
  • 메세지 바디(body)를 통해 서버로 요청 전달하면 서버는 요청 데이터를 처리하여 업데이트
  • 전달된 데이터로 주로 신규 리소스 등록, 프로세스 처리에 사용
  • 만일 데이터를 GET 하는데 있어, JSON으로 조회 데이터를 넘겨야 하는 애매한 경우 POST를 사용

3. PUT

  • 리소스를 대체(수정)하는 메서드 (Update)
  • 정보를 서버로 제출하는 형식은 POST와 동일하나, 기존 데이터를 갱신하기 위해 사용한다.
  • 만일 요청 메세지에 리소스가 있으면 덮어쓰고, 없으면 새로 생성한다.
  • 데이터를 대체해야 하니, 클라이언트가 리소스의 구체적인 전체 경로를 지정해 보내주어야 한다.

4. PATCH

  • 리소스 일부 부분을 변경하는 메서드 (Update)
  • 리소스를 갱신한다는 것은 PUT과 유사하나, PATCH는 PUT과 달리 리소스 전체가 아닌 일부분만을 수정할 때 사용한다.
  • 만일 PATCH를 지원하지 않는 서버에서는 POST를 대신 사용할 수 있다.

5. DELETE

  • 리소스를 제거하는 메서드 (Delete)
  • 상태 코드는 대부분 200을 사용하고 상황에 따라 204를 사용한다.

6. HEAD

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

7. OPTIONS

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

8. CONNECT

  • 프록시 서버와 같은 중간 서버 경유
  • 요청한 리소스에 대한 양방향 연결을 시작한다.
  • CONNECT 메서드는 SSL (HTTPS)를 사용하는 웹사이트에 접속하는데 사용될 수 있다.

9. TRACE

  • 요청 리소스가 수신되는 경로를 보여줌
  • 대상 리소스에 대한 경로를 따라 loop-back 테스트를 할 때 사용한다.
  • 서버에 도달 했을 때의 최종 패킷 내용을 응답 받을 수 있다.
  • 요청의 최종 수신자는 반드시 송신자에게 200(OK) 응답의 내용(Body)로 수신한 메세지를 반송해야 한다.
  • 최초 Client의 요청에는 Body가 포함될 수 없다.

    💡 Tip

    클라이언트와 요청 패킷이 방화벽, Proxy 서버, Gateway등을 거치면서 패킷의 변조가 일어날 수 있는데, 그래서 TRACE 메서드를 통해 요청했던 패킷 내용과 응답 받은 패킷 내용을 비교하여 변조 유무를 확인할 수 있다.

❗️ 보안상의 이유로 웹 서버가 GET, POST 2개 또는 OPTIONS 포함 3개 만을 허용하는 경우가 대부분이다.


HTTP 버전별 지원 Method

  • HTTP/0.9 - GET
  • HTTP/1.0 - GET, POST, HEAD
  • HTTP/1.1 - GET, POST, HEAD, OPTIONS, PUT, DELETE. TRACE, CONNECT
profile
매일 성장하는 주니어 개발자의 기록📝

0개의 댓글