[HTTP 완벽가이드] HTTP 메서드
메서드
안전한 메서드(Safe Method)
HTTP는 안전한 메서드라 불리는 메서드의 집합을 정의한다.
예를들면 GET
이나 HEAD
메서드를 사용하는 HTTP 요청은 서버에 어떤 작용도 없음을 의미한다.
작용이 없다는 것은, HTTP 요청의 결과로 인해 서버에서 일어나는 일은 아무것도 없다는 것을 의미한다.
안전한 메서드가 서버에 작용을 유발하지 않는다는 보장은 없다(웹 개발자에게 달렸다.).
안전한 메서드의 목적은, 서버에 어떤 영향을 줄 수 있는 안전하지 않은 메서드가 사용될 때 사용자들에게 그 사실을 알려주는 HTTP 애플리케이션을 만들 수 있도록 하는 것에 있다.
GET
GET
은 가장 흔히 쓰이는 메서드다. 주로 서버에게 리소스를 달라고 요청하기 위해 쓰인다.
HEAD
HEAD
메서드는 정확히 GET
처럼 행동하지만, 서버는 응답으로 헤더만을 돌려준다.
HEAD
를 사용하면,
- 리소스를 가져오지 않고도 그에 대해 무엇인가를 알아낼 수 있다.
- 응답의 상태코드를 통해, 개체가 존재하는지 확인할 수 있다.
- 헤더를 확인하여 리소스가 변경되었는지 검사할 수 있다.
PUT
GET
메서드가 서버로부터 문서를 읽어 들이는데 반해 PUT
메서드는 서버에 문서를 쓴다.
PUT
메서드의 의미는, 서버가 요청의 본문을 가지고 요청 URL의 이름대로 새 문서를 만들거나, 이미 URL이 존재한다면 본문을 사용해서 교체하는 것이다.
POST
POST
메서드는 서버에 입력 데이터를 전송하기 위해 설계되었다.
HTML 폼을 지원하기 위해 흔히 사용되며, 채워진 폼에 담긴 데이터는 서버로 전송된다.
TRACE
TRACE
메서드는 클라이언트에게 자신의 요청이 서버에 도달했을 때 어떻게 보이게 되는지 알려준다.
TRACE
요청은 목적지 서버에서 루프백(loopback)
진단을 시작한다. 요청 전의 마지막 단계에 있는 서버는 자신이 받은 요청 메시지를 본문에 넣어 TRACE
응답을 되돌려준다. TRACE
메서드는 주로 진단을 위해 사용된다. 예를 들면 요청이 의도한 요청/응답 연쇄를 거쳐가는지 검사할 수 있다.
OPTIONS
OPTIONS
메서드는 웹 서버에게 여러 가지 종류의 지원 범위에 대해 물어본다. 이 메서드는 여러 리소스에 대해 실제로 접근하지 않고도 그것들을 어떻게 접근하는 것이 최선인지 확인할 수 있는 수단을 클라이언트 애플리케이션에게 제공한다.
DELETE
DELETE
메서드는 서버에게 요청 URL로 지정한 리소스를 삭제할 것을 요청한다. 그러나 클라이언트는 삭제가 수행되는 것을 보장하지 못한다.
왜냐하면 HTTP 명세는 서버가 클라이언트에게 알리지 않고 요청을 무시하는 것을 허용하기 때문이다.
확장 메서드
확장 메서드는 HTTP/1.1 명세에 정의되지 않은 메서드다. HTTP는 필요에 따라 확장해도 문제가 없도록 설계되어 있으므로, 새로 기능을 추가해도 과거에 구현된 소프트웨어들의 오동작을 유발하지 않는다.
만약 확장 메서드를 정의한다면, 대부분의 HTTP 애플리케이션이 이해할 수 없을 것이다. 마찬가지로 이해할 수 없는 확장 메서드를 사용하는 애플리케이션과 마주할 수도 있다. 확장 메서드를 다룰 때는 “엄격하게 보내고 관대하게 받아들여라”라는 오랜 규칙에 따르는 것이 가장 좋다.
댓글남기기