클라이언트는 필요할 때 서버에 자원(Resource - 리소스)을 요청하고, 서버는 요청에 따라 자원을 보내주거나, 변경하는 일을 하게 됩니다.
자원을 어떻게 다루느냐에 따라서 http 메소드가 달라집니다. "동사(verb)" 4종류(GET,POST,PUT,DELETE) 와 명사 5종류(HEAD, CONNECT, OPTIONS, TRACE, PATCH) 를 합쳐서 총 9개가 있습니다.
서버에 자원 조회를 요청합니다. GET 메소드는 상태를 변화시키지 않으며, 그저 요청한 자원을 클라이언트에 응답합니다.
CRUD(Create Read Update Delete)중 Read에 해당합니다. 데이터베이스 입장에서 보면 select입니다.
가장 기본이 되는 http 메소드로 대부분의 클라이언트는 http 메소드를 특정하지 않는다면 GET 메소드라고 간주합니다.
서버에 새로운 자원 생성을 요청합니다. 상태를 변화시킵니다.
CRUD 중 Create 에 해당합니다. 데이터베이스 입장에서 보면 insert입니다.
웹 브라우저는 POST로 CUD를 모두 해결합니다. html에서는 GET과 POST 두개의 메소드만 처리하는 경향이 있기 때문입니다.
서버에 자원 변경을 요청합니다. 상태를 변화시킵니다. 서버의 리소스를 클라이언트가 알고 있다는 전제 하에 서버에 요청합니다.
CRUD 중 Update에 해당합니다. 데이터베이스 입장에서 보면 update입니다.
PUT은 브라우저에서는 잘 사용하지 않고, 일반적으로는 REST API 설계시 많이 사용됩니다. 물론 jQuery등의 자바스크립트 라이브러리를 이용해서 PUT 메세지를 서버로 전송하는 것은 가능합니다만 쓰는 경우는 드문 편입니다.
서버에 자원 삭제를 요청합니다. 상태를 변화시킵니다.
CRUD 중 Delete에 해당합니다. 데이터베이스 입장에서 보면 delete입니다.
DELETE도 PUT처럼 브라우저보다는 REST API에서 주로 사용됩니다.
이 외에도 응답 본문 없이 헤더만 보내는 HEAD
, 연결 터널을 맺는 CONNECT
, 리소스의 옵션을 결정하는 OPTIONS
, 메세지 전송을 테스트하는 TRACE
, 리소스 일부를 수정하는 PATCH
등이 있습니다만, 주로 사용하는 것이 아니므로 상세한 설명은 생략하겠습니다.