GET과 HEAD메서드는 안전한 메서드로 분류되는데 서버에 어떠한 작용도 없기 때문이다.
사실 안전한 메서드가 서버에 작용을 유발하지 않는 다는 보장은 없는데, 안전한 메서드의 목적은 서버에 어떤 영향을 줄 수 있는 안전하지 않은 메서드가 사용될 때, 사용자에게 그 사실을 알려주는 HTTP애플리케이션을 만들수 있도록 하기 위한 것이다.
가장 흔히 쓰이는 메서드로 서버에게 리소스 조회를 요청하기 위해 쓰인다. 안전한 메서드로 분류되며 멱등성을 갖고 캐시가 가능하다. 요청에 본문이나 페이로드를 담을수 있지만 의미는 정의되어있지 않으며 바람직하지 않다.
GET처럼 행동하지만, 서버는 응답으로 리소스를 보내지 않고 헤더만을 반환한다. 또한 반드시 반환되는 헤더가 GET으로 얻는 것과 정확히 일치하는 것을 보장해야 한다.
본문을 갖고 있진 않지만 Content-Length
처럼 본문 컨텐츠를 설명하는 헤더를 포함할 수 있다.
PUT메서드는 서버에 문서를 쓴다. 다만 해당하는 리소스가 이미 존재한다면 본문을 사용해서 교체(수정)한다. POST와의 차이는 멱등성으로 PUT메서드는 멱등성을 갖으며, 여러번 연속으로 보내도 같은 효과를 보인다.
서버에 입력 데이터를 전송하기 위해 설계되었다. HTML폼을 지원하기 위해 흔히 사용되며, 서버는 이것을 모아서 정의된 동작을 수행한다.
클라이언트가 어떤 요청을 할 때, 해당 요청은 방화벽, 프록시, 게이트웨이등의 애플리케이션을 통과하게 되는데, 이러한 애플리케이션들은 원래의 HTTP요청을 수정할 수 있는 기회를 갖고 있고, TRACE메서드는 클라이언트에게 요청이 서버에 도달했을 때 어떻게 보이는지 알려준다.
TRACE요청은 주로 진엔을 위해 사용되며, 프록시나 다른 애플리케이션이 요청에 어떤 영향을 미치는지 확일할때도 쓰인다.
OPTIONS메서드는 웹 서버에게 여러가지 종류의 지원 범위에 대해 물어본다. 서버에게 특정 리소스에 대해 어떤 메서드가 지원되는지 물어 볼 수 있다.
CORS 프리플라이트가 OPTIONS메서드를 통해 전송되게된다.
서버에게 요청 URL로 지정한 리소스를 삭제할 것을 요청한다. 다만, 클라이언트는 삭제가 수행되는 것을 보장하지는 못한다.
DELETE 메서드를 요청받고 사용할 수 있는 응답 상태 코드 예제