Wecode 1차 프로젝트 시작전,
지금까지 배워왔던 부분을 복습하는
느낌으로 정리해버리자 !!
이 세상 누구나 한번쯤은 봤을만한 단어 HTTP!
이번시간에는 HTTP에 대해 알아 보도록 하겠습니다!
HyperText Transfer Protocol의 약자로서,
약자 하나하나 짚어보는 시간을 가지도록 하겠다!
우리는 사실 HyperText가 무엇인지 알고있다!
HTTP에서 HyperText는 HTML(HyperText Markup Language)의 HyperText와 그 의미가 동일하며, 문서와 문서가 링크로 연결되도록 하는 태그로 구성된 언어란 뜻이다. 다시 말하면, HTML은 웹페이지를 만들기 위해서 웹브라우저 위에서 동작하는 언어를 뜻한다.
우리는 우리가 만든 웹사이트를 널리 알리고 다른 사람들과
공유하기 위해서 다른 컴퓨터에게 전송해야 한다.
그리고 그러한 전송은 보내는 곳과 받는 곳이 있다는 것이 큰 특징이다.
ex : Request, Response (요청과 응답)
프로토콜은 협약, 통신 규약 이라는 의미를 가지며, 물리적으로 떨어진 컴퓨터 끼리 어떻게 HTML파일(HyperText)을 주고 받을지에 대한 약속으로 볼 수 있다.
우리는 한국인으로 태어난 이상 한국어를 사용해야 하는 사회에 살고 있다. 한국 사회의 소통방식(약속)인 한국어로 소통을 하듯 컴퓨터도 컴퓨터 끼리의 소통 방법이 필요하다. 이런 필요에 의해서 만들어진 소통하는 방식 또는 약속이 HTTP다. 우리가 사용하는 인터넷 상에서 일어나는 소통은 대부분 HTTP 규약을 따른다.
소통의 핵심은 요청과 응답
HTTP 통신의 핵심은 요청과 응답이다. 앞서 HTTP의 세번째 키워드인 Transfer 에 대해서 설명 할 때, 전송은 보내는 주체와 받는 주체가 있다고 했다. 보내는 주체는 받는 주체에게 요청을 보내고, 받는 주체는 요청을 보낸 주체에게 응답을 보낸다. 다시 편지로 예를 들어보면, 보내는 주체는 편지의 발신자고, 받는 주체는 수신자가 된다. 수신자는 잘 받았다는 응답을 다시 발신자에게 보낸다.
컴퓨터끼리의 소통도 마찬가지다. 결국 사람이 필요에 의해서 만든 소통 방식이기 때문에 우리의 소통 방식과 큰 차이점이 없다. 랩탑을 연다. 유튜브에 접속한다. 내가 평소 즐겨보던 유튜브 영상의 링크를 누른다. 그 순간 내 랩탑은 구글의 서버에게 요청을 보낸다. "골든 리트리버 영상 주세요." 구글의 서버는 이 요청을 처리해서 다시 요청을 보낸 나의 랩탑에 응답을 보낸다. "귀여운 골든 리트리버 영상 드립니다."
HTTP를 어렵게 생각할 필요 없다. 사실은 우리에게 친숙한 소통방식을 컴퓨터의 소통방식에도 적용한 것이다.
HTTP에 대한 설명 중 절.대, N.E.V.E.R(강조) 잊어서는 안 될 HTTP의 특징이 바로 Stateless 다. 문자 그대로 번역하면 State(상태) + less(없음) 을 의미한다.
각각의 HTTP 통신(요청/응답)은 독립적 이기 때문에 과거의 통신(요청/응답)에 대한 내용을 전혀 알지 못 한다. 이전의 상태를 전혀 알지 못 한다는 것은 무엇을 의미할까?
매 통신마다 필요한 모든 정보를 담아서 요청을 보내야 한다. 비유를 하자면, 마치 이미 자기소개를 한 사람에게 계속해서 똑같은 내용으로 자기소개를 해야하는 것과 같다.
따라서, 만일 여러번의 통신(요청/응답)의 진행과정에서 연속된 데이터 처리가 필요한 경우(ex. 온라인 쇼핑몰에서 로그인 후 장바구니 기능)를 위해 로그인 토큰 또는 브라우저의 쿠키, 세션, 로컬스토리지 같은 기술이 필요에 의해 만들어졌다.
HTTP 통신 메소드 세가지를 소개하겠습니다.
각각의 메소드(GET, POST, DELETE)가 가지는 의도에 대해 설명하겠습니다!
이러한 통신 메소드는 프론트엔드(클라이언트)의 입장에서 요청한 것임을
인지하셔야 합니다! 백엔드의 입장에서 생각하면 혼란이 옵니다!
HTTP 는 컴퓨터 끼리의 소통을 위한 통신규약이다.
HTTP 통신은 Request(요청)과 Response(응답)으로 이루어 진다.
HTTP 통신의 매 요청과 응답은 이전 상태를 알지 못 한다. (Stateless)