본문 바로가기

카테고리 없음

HTTP란 무엇일까?

HTTP(HyperText Transfer Protocol)란?

  • 이터를 주고받는 양식을 정의한 "통신 규약"중 하나가 HTTP입니다.
  • 매우 범용적인 양식을 가지고 있어 전 세계에서 제일 널리 쓰이는 통신 규약입니다.
  • 여기서 말하는 통신 규약이란, 컴퓨터끼리 데이터를 주고받을 때 정해둔 약속을 의미합니다.
  • 현재 이용되는 대부분의 웹 서버가 HTTP를 기반으로 정해준 규칙에 맞게 데이터를 주고받습니다.
  • 또한, 모든 브라우저는 HTTP 프로토콜을 기본으로 지원하기 때문에 여러분은 매일 HTTP를 이용하는 셈이 됩니다.

우리는 어떻게 HTTP로 데이터를 주고받을까?

  • HTTP에서는 언제나 Request, Response라는 개념이 존재합니다.
  • 서버와 브라우저의 관계로 가볍게 말해보면 아래와 같이 동작합니다.
    1. 브라우저는 서버에게 자신이 원하는 페이지(URL 등의 정보)를 **요구(Request)**합니다.
    2. 서버는 브라우저가 원하는 페이지가 있는지 확인하고, 있다면 해당 페이지에 대한 데이터를 실어 응답**(Response)**해줍니다. 없다면 없는 페이지에 대한 데이터를 반환합니다.
    3. 브라우저는 서버에게 전달받은 데이터를 기반으로 브라우저에 그려줍니다.
  • 그리고 위와 같은 사례에서 "데이터"는 어떠한 데이터든 주고받는 게 가능합니다.

추가 데이터? 데이터? 뭐가 다른 걸까?

  • Method (호출/요청 방식)
    • GET: 이름 그대로 어떤 리소스를 얻을 때 사용됩니다. 브라우저의 주소창에 URL을 입력하면 GET 메서드를 사용해서 서버에 요청을 보냅니다.
    • POST: 웹 서버에 데이터를 게시할 때 사용하는 게 일반적입니다. (ex. 회원가입, 게시글 작성, 댓글 작성)
    • 그 외 DELETE 등의 여러 요청 방식이 존재합니다.
    • 가장 대표적인 요청 방식이 GET과 POST입니다.
  • Header (추가 데이터. 메타 데이터)
    • 브라우저가 어떤 페이지를 원하는지
    • 요청받은 페이지를 찾았는지
    • 요청 받은 데이터를 성공적으로 찾았는지
    • 어떤 형식으로 데이터를 보낼지
GET naver.com HTTP/1.1
  • 이러한 사례 외에도 아주 다양한 의사 표현을 위한 데이터를 모두 Header 필드에 넣고 주고받습니다. 위에서 설명된 메서드도 사실은 헤더에 포함되어 서버로 보내집니다.
  • Payload (데이터. 실제 데이터)
    • 서버가 응답을 보낼 때에는 항상 Payload를 보낼 수 있습니다.
    • 클라이언트(브라우저)가 요청을 할 때에도 Payload를 보낼 수 있습니다. 그리고 "GET method를 제외하곤 모두 Payload를 보낼 수 있다"는 게 HTTP에서의 약속입니다.

HTML

<!DOCTYPE html>
<html>
  <head><title>By @ResponseBody</title></head>
   <body>Hello, Spring 정적 웹 페이지!!</body>
</html>

 

JSON

{ 
  "name":"Robbie",
  "age": 20
}
  • HTTP의 Payload를 통해 위와 같은 데이터들을 요청하고 응답받을 수 있습니다.