Hyper Text Transfer Protocol의 약자로 Hyper Text를 웹 브라우저과 서버 간에 하이퍼텍스트를 전송하기 위한 프로토콜이다. 최초에는 텍스트를 주고받는 용도로 설계되었지만, 현재는 이미지, 오디오, 비디오 등 다양한 형식의 데이터를 주고 받을 수 있다.
HTTP는 클라이언트와 서버 간의 통신을 위한 주요 프로토콜로서, 클라이언트가 요청(request)을 보내면 서버는 해당 요청에 대한 응답(response)을 반환한다. 이러한 요청과 응답은 HTTP 또는 HTTPS 프로토콜을 준수하여 통신된다.
따라서 웹 브라우저의 주소 표시줄에 URL을 입력하거나 링크를 클릭하면 HTTP 요청이 발생하고, 서버는 해당 요청에 대한 응답을 반환하여 웹 페이지를 표시한다.
* Protocol이란 통신을 하는 두 주체가 지켜야 하는 통신 규약

request(요청)은 클라이언트가 서버로 전달하는 메시지로, 서버에서 특정 동작을 수행하도록 유도한다. 클라이언트가 서버에게 어떤 작업을 수행해야 하는지를 알리는 것으로, 예를 들어 웹 페이지를 요청하거나 파일을 업로드하는 등의 작업이 포함될 수 있다.
response(응답)은 서버가 요청에 대한 결과를 클라이언트에게 보내는 것이다. 클라이언트가 요청한 작업의 성공 또는 실패, 요청된 데이터의 내용 등을 포함할 수 있다.
웹 브라우저로 특정 페이지에 접속할 때, 해당 페이지의 HTML 파일 뿐만 아니라 이미지, CSS 파일 등 여러 파일을 받아 와야 하기 때문에 반드시 하나 이상의 request-response가 오고 간다.
클라이언트와 서버 간의 통신에서 사용되는 요청 유형을 나타낸다.
각 메서드는 특정한 작업을 수행하도록 설계되어 있으며, 서버는 요청을 수신하고 해당 요청에 따라 적절한 응답을 반환한다.
| 메서드 | 데이터 처리 |
|---|---|
| GET | Read, 기존 데이터 조회 |
| POST | Update, 새 데이터 추가 |
| PUT | Create, 기존 데이터 수정 |
| DELETE | Delete, 기존 데이터 삭제 |
| PATCH | Update, 기존 데이터 수정 |
| HEAD | Read, 기존 데이터 조회 |
GET 메서드는 서버로부터 데이터를 요청하는 데 사용된다. 서버의 상태를 변경하지 않으며, 요청된 데이터는 URL의 쿼리 문자열에 포함된다.
일반적으로 웹 브라우저에서 링크를 클릭하거나 URL을 입력하여 페이지를 요청할 때 GET 메서드가 사용된다.
* 쿼리 문자열은 URL 끝에 물음표(?)로 시작하며, '&'로 구분되는 여러 개의 키-값 쌍으로 이루어져 있음
POST 메서드는 클라이언트가 서버로 데이터를 제출할 때 사용되며, 이 데이터는 HTTP 요청의 body에 포함되어 전송된다.
사용자가 로그인 양식에 정보를 입력하고 제출하면 해당 정보는 POST 요청으로 서버로 전송되어 로그인을 처리한다. 또는 새로운 게시물을 작성할 때 해당 내용을 POST 요청으로 서버로 제출하여 새로운 게시물을 생성한다.
PUT 메서드는 클라이언트가 서버에게 리소스를 업데이트하거나 생성할 때 사용되며, 멱등성을 가지고 있어 여러 번 요청해도 안전하게 사용됩니다. 일반적으로 클라이언트가 리소스의 전체적인 표현을 전송하기 때문에 기존 데이터를 완전히 대체한다.
DELETE 메서드는 클라이언트가 서버로부터 특정 리소스를 삭제할 때 사용되며, 멱등성을 가지고 있어 여러 번 요청해도 안전하게 사용된다. 일반적으로 요청 본문에 추가 데이터가 필요하지 않으며, 리소스의 식별은 URL에 포함됩니다.
* PUT은 기존 데이터를 완전히 새로운 데이터로 대체하고, PATCH는 새 데이터로 기존 데이터의 일부를 수정하는 메서드
* HEAD 메소드는 GET 메소드와 유사하나 response에서 body는 제외하고, 딱 head 부분만 받는다.
(실제 데이터가 아니라 데이터에 관한 정보만 얻으려고 하는 상황에 활용한다.)
** 용량이 큰 데이터를 받고자 할 때, request에 HEAD 메서드를 담아 보내고 Content-length로 컨텐츠 크기를 확인할 수 있다.
POST나 PUT메서드와 함께 데이터를 전송할 때 사용된다.GET과 DELETE 메서드는 요청에 대한 데이터를 본문에 담지 않는다. 요청 파라미터는 URL의 쿼리 문자열에 포함되므로 별도의 본문이 필요하지 않다.