HTTP는 Hyper Text Transfer Protocol의 약자로, 컴퓨터들끼리 HTML파일을 주고받을 수 있도록 하는 소통방식 또는 약속이다.
HTTP는 주고 받을 수 있도록 하는 소통방식에 대한 약속으로 보내는 주체(Request를 하는 쪽)과 받는 주체(Response를 하는 쪽)가 존재한다.
말 그대로 state가 없다는 이야기이다. 무슨 뜻이냐!!!
HTTP로 통신을 하면 이전에 보냈던 요청이나 요청에 담겨있던 데이터들을 기억하지 못 한다는 뜻이다.
따라서 우리가 HTTP로 통신을 할 경우에는 계속해서 필요한 데이터를 담아 요청을 해야만 응답을 받을 수 있다.
Request는 크게 Start Line,Headers,Body 세 부분으로 이루어져있다.
Start Line 또한 세 가지 부분으로 이루어져 있다.
요청의 추가 정보(메타 데이터 등)을 담고 있는 부분으로 key:value 값으로 구성되어있다.
Headers: {
Host: 요청 목표타겟의 주소
User-Agent: 요청을 보내는 클라이언트의 정보
Content-Type: 해당 요청이 보내고 있는 메세지 body의 타입
Content-Length: body내용의 길이
Authorization: 회원 인증, 인가 등을 처리하기 위한 토큰이 담기는 위치.
}
해당 요청의 실제 내용으로, 보통 POST 메소드에서 body를 많이 사용한다.
Response도 Request와 마찬가지로 Status Line, Headers, Body 세 부분으로 구성되어있다.
응답의 상태 줄로, 요청에 대한 처리상태를 클라이언트에게 알려준다.
HTTP/1.1 404 NOT FOUND
요청의 헤더와 동일. 응답의 추가정보(메타데이터)를 담고 있다. 응답에서만 사용되는 헤더의 정보들이 담겨있다.
(User-Agent 대신 Server 헤더가 사용됨)
요청의 Body와 일반적으로 동일하다. 응답의 형태에 따라 Body가 있을수도, 없을수도 있다. 가장 많이 사용되는 Body 타입은 JSON(JavaScript Object Notation).