alt
Home HTTP 완벽가이드 3장 - 2. HTTP 메서드
Post
Cancel

HTTP 완벽가이드 3장 - 2. HTTP 메서드

: 서버에게 무엇을 해야할지 말해주는 것

  • HTTP의 일곱가지 기본 메서드
메서드설명(일반적으로)
본문 포함하는가?
GET서버에서 데이터를 가져옴X
POST서버에게 해당 데이터 처리를 요청O
PUT서버에 요청 메시지의 본문을 저장O
DELETE서버에서 데이터 제거X
HEAD서버에서 데이터에 대한 헤더를 가져옴X
TRACE메시지가 프락시를 거쳐 서버에 도착하는 과정 추적X
OPTIONS서버가 어떤 메서드를 수행할 수 있는지 확인X
  • 확장 메서드: 이외에도 서버마다 각 메서드를 추가로 구현해놓았을 수도 있음

    • LOCK(리소스 잠금), COPY(복사), MOVE(옮김) 등

    • 이걸 사용할 땐 프록시 등 중간 매체는 모르는 메서드에 대해 관용적이어야 한다.

      엄격하게 보내고 관대하게 받아들여라

  • 마찬가지로, 모든 메서드가 다 구현되어있지 않을 수 있음.


안전한 메서드

: GET, HEAD. 이 두 메서드는 서버에 어떠한 변화(side effect)를 주지 않는다.

  • 안전하지 않은 메서드 사용 시, 영향이 있을 수 있음을 사용자에게 알리도록 애플리케이션을 만들어야한다.
  • e.g 경고 메시지


GET

  • 초기에 (HTTP/0.9 까지) 이 메소드밖에 없었다.
  • 일반적으로 POST보다 빠르다. 일반적으로 브라우저 캐시나 프록시, 웹서버에 의해 캐싱되어 사용되기 때문
  • 패킷이 가볍다: 본문이 없고, 때문에 content-type, content-length 등 내용(content)에 관한 헤더 또한 없다.


  • 서버는 헤더만을 응답으로 돌려주고 엔티티 본문은 절대 반환되지 않는다.
    • 리소스를 가져오지 않고도, 타입 등 정보를 알 수 있다.
    • 리소스 존재 여부를 확인하고자 할 때
    • 리소스 변경 여부 검사할 때
  • 반환받는 응답 헤더가 반드시 GET과 정확히 일치해야 한다.


PUT

: 리소스 존재하면 수정. 리소스 없다면 만들어 저장하기도 함.

  • 데이터 변경 가능성 있기 때문에 일반적으로 인증을 필요로 함.


POST

: 생성의 의미로 많이 쓰이지만, 원래는 서버에 입력 데이터를 전송(수행) 하기 위한 목적

  • 서버는 전송받은 데이터를 처리할 서버 게이트웨이 프로그램에 전달한다.
  • HTTP/1.0 에서 추가됨.
  • 일반적으로 멱등하지 않다.(계속 요청하면 계속 리소스 생성)


TRACE

: 어떤 경로로 서버까지 전달되었는지 추적. 진단의 목적

  • 클라이언트의 요청은 방화벽, 프록시, 게이트웨이 등을 통해 서버까지 가고, 서버는 자신이 받은 요청 메시지를 본문에 넣어 TRACE 응답을 되돌려준다.
  • 클라이언트가 보낸 메시지가 변조되었는지, 유실되었는지 등을 확인 가능
  • 중간 애플리케이션들이 서로 다른 HTTP 메서드들에 대해 일관되게 다룬다고 가정하는 문제.
    • 실제로 Proxy는 POST는 바로 통과, GET은 웹 캐시와 같은 애플리케이션으로 전송


OPTIONS

: 어떤 메서드가 지원되는지를 물어볼 때

  • CORS의 preflight를 이거로 날려서 가능한지 확인
  • 여러 리소스에 실제로 접근하지 않고도, 어떻게 접근하는게 최선인지를 확인 가능.



Reference)

HTTP 완벽 가이드

This post is licensed under CC BY 4.0 by the author.