HTTP는 클라이언트-서버 구조에서 데이터를 전송하기 위해 사용되는 프로토콜입니다. 거의 모든 형태의 데이터를 전송할 수 있으며, 서버 간 데이터 송수신에도 대부분 HTTP를 사용합니다.
예시:
클라이언트: GET /index.html HTTP/1.1
서버: HTTP/1.1 200 OK
Content-Type: text/html
<html>
<body>
<h1>Welcome to the homepage</h1>
</body>
</html>
상태를 유지하지 않음: 서버가 클라이언트의 상태를 기억하지 않습니다.
장점: 서버 확장성이 높고, 서버가 변경되어도 클라이언트 정보를 알 수 있습니다.
클라이언트가 서버에 요청 시, 클라이언트 정보를 함께 전달하기 때문입니다.
단점: 클라이언트가 추가 데이터를 전송해야 합니다.
예시:
클라이언트: GET /profile HTTP/1.1
Host: www.example.com
Authorization: Bearer <token>
서버: HTTP/1.1 200 OK
Content-Type: application/json
{
"name": "John Doe",
"email": "john.doe@example.com"
}
예시:
클라이언트: GET /style.css HTTP/1.1
Host: www.example.com
서버: HTTP/1.1 200 OK
Content-Type: text/css
body {
background-color: #f3f3f3;
}
HTTP 메시지는 클라이언트와 서버 간의 데이터 교환 형식입니다.
요청 메시지와 응답 메시지로 나뉩니다.
예시:
GET /index.html HTTP/1.1
Host: www.example.com
User-Agent: Mozilla/5.0
Accept: text/html
예시:
HTTP/1.1 200 OK
Content-Type: text/html
Content-Length: 1234
<html>
<body>
<h1>Welcome to the homepage</h1>
</body>
</html>
HTTP는 단순한 구조 덕분에 이해하고 구현하기 쉽습니다.
또한, 확장 가능한 설계를 통해 다양한 형태의 데이터를 전송하고,
새로운 기능을 추가할 수 있습니다.
예를 들어,
HTTP 헤더를 통해 추가 정보를 전송하거나,
HTTP 메서드를 통해 다양한 요청을 처리할 수 있습니다.