HTTP Mehtod

YH·2023년 1월 30일
0

HTTP Method 정리

HTTP Method란?

  • 클라이언트와 서버 사이에 이루어지는 요청(Request)과 응답(Response) 데이터를 전송하는 방식

HTTP Method 종류

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

GET

  • 리소스 조회(Read)
  • 서버에 데이터 전달 시, Query String 사용

    GET /members/100?name=yh&age=30

  • 메시지 Body를 통해 데이터 전달 가능하지만, 서버에서 따로 구성해야 하고 지원하지 않는 곳도 존재하여 권장하지 않음
  • 조회 시, POST 사용도 가능하나, GET은 캐싱이 가능하므로 GET이 유리

POST

  • 메시지 Body에 데이터를 담아 서버로 요청 데이터 전달
  • 주로 새로운 리소스 생성, 프로세스 처리에 사용
  • 다른 메서드로 처리하기 애매한 경우(JSON 형태 라던지), POST를 사용
  • 신규 리소스 등록 시, 201 Status Code와 생성된 URI 경로(Location)를 반환

PUT

  • 리소스를 대체(수정) 또는 생성하는 메서드 (Update)
  • 요청 메시지에 리소스가 있으면 기존 것을 덮어쓰고, 없으면 새로 생성
  • 구체적인 URI 경로를 지정해주어야 함

    PUT /members/100

PATCH

  • 리소스의 일부분을 변경하는 메서드 (Update)
  • PATCH 대신 POST로 대체 가능
  • PUT 메서드와의 차이점
    • PUT은 리소스의 전체를 업데이트, PATCH는 일부분을 업데이트
    • 리소스가 없는 경우, PUT은 새로 생성함, PATCH는 생성 안함
    • PUT은 멱등성 O, PATCH는 멱등성 X (요청 내용에 따라 멱등이 되기도 함)

DELETE

  • 리소스를 제거하는 메서드 (Delete)

HEAD

  • GET과 동일하지만 서버에서 Body를 리턴하지 않음
  • 리소스는 받지 않고 오직 찾기만 원할 때, 상태만 확인할 때 사용
  • 서버의 응답 헤더를 통해 리소스가 수정 되었는지 확인

TRACE

  • 요청 리소스가 수신되는 경로를 보여줌
  • Client의 요청 패킷이 방화벽, Proxy 서버, Gateway 등을 거치면서 패킷의 변조가 일어날 수 있는데, 이 때 서버에 도달 했을 때의 최종 패킷의 요청 패킷 내용을 응답 받을 수 있음
  • 요청 패킷 내용과 응답 패킷 내용을 비교하여 변조 유무 확인 가능
  • 요청의 최종 수신자는 송신자에게 200(OK) 응답을 Body로 수신한 메시지를 반송해야 함
  • 최초 Client 요청에는 Body가 포함될 수 없음.

OPTION

  • 예비 요청(Preflight)에 사용되는 메서드
  • 예비 요청은 본 요청 전에 안전한지 미리 검사하는 요청
  • Target Server의 지원 가능한 Method(ex> GET, POST …)를 알아보기 위함
  • CORS 정책 검사

CONNECT

  • 요청한 리소스에 대해 양방향 연결을 시작하는 메서드
  • Client가 Proxy를 통해서 Server와 SSL통신을 하고자 할 때 사용
  • Client는 원하는 목적지와의 TCP 연결을 HTTP 프록시 서버에 요청 > 서버는 클라이언트를 대신하여 연결의 생성 진행 > 한번 서버에 의해 연결이 수립되면, 프록시 서버는 클라이언트에 오고가는 TCP 스트림을 계속해서 프록시 함

메서드 속성

안전

  • 호출해도 리소스를 변경하지 않는 특성

멱등성

  • 동일한 요청을 여러 번 보내도 한 번 보내는 것과 같은 것
  • 외부 요인으로 중간에 리소스가 변경되는 것을 고려하지 않고 해당 요청을 기준으로 고려 함
  • 올바르게 구현한 GET, PUT, DELETE 메소드는 멱등성을 지녀야 함

캐시 가능

  • 응답 결과를 서버에 캐시 해서 사용 가능한 메서드
  • GET, HEAD, POST, PATCH가 가능하지만 실무에서는 구현이 어렵기 때문에 GET, HEAD 정도만 캐시 하여 사용

#참고 출처

profile
하루하루 꾸준히 포기하지 말고

0개의 댓글