HTTP는 HyperText Transfer Protocol의 약자이다.
우선 하나하나 용어를 살펴보자~
그 HTML의 HyperText와 의미가 동일하다.
즉, 문서와 문서가 링크로 연결되도록 하는 태그들로 이루어진 언어라는 뜻이다.
Q.HTML로 만든 웹페지리를 어떻게 주고 받을 것인가??
말 그대로 전송이다.
우리가 아무리 로컬호스트에서 멋지게 사이트를 만들어봤자 우리만 볼 수 있고 남들은 볼 수가 없다.
따라서 우리가 만든 이 멋진 웹사이트를 널리 알리고 다른 사람들과 공유하기 위해서 전송을 해야할 필요가 있다.
보내는 주체, 받는 주체가 있다는 것이 특징이다.
프로토콜은 얼핏보면 말이 좀 어려운데 협약, 통신 규약 이라는 의미를 가진다.
쉽게 말해서 A컴퓨터와 B컴퓨터가 HTML파일을 주고 받으며 통신을 할 것인데 이를 어떻게 진행할 것인가에 대한 약속, 계약서 같은것을 말한다.
최종적으로 정리해보면 HTTP란 컴퓨터들끼리 HTML파일을 주고받을 수 있또록 하는 소통방식 또는 약속이다.
1.Request/ Response (요청/ 응답)
컴퓨터끼리 통신을 하고 HTML을 주고받을 때 한쪽은 요청하는, 한쪽은 응답하는 주체가 되기 마련이다.
A컴퓨터가 자료를 요청하면 B컴퓨터가 이 요청을 받고 처리해서 다시 A컴퓨터로 응답을 보낸다.
인간의 소통과 아주 유사하다.
HTTP의 가장 중요한 특징 중 하나.
말 그대로 번역하면 상태없음이라는 의미다.
각각의 HTTP 통신들은 서로 독립적이기 때문에 과거에 무슨 요청이 있었고 무슨 응답이 있었는지 알지 못한다. 즉, 이전의 통신상태에 대해 알지 못한다는 것이다.
따라서 컴퓨터는 매 통신마다 필요한 모든 정보들을 담아서 요청을 보내야 한다.
하지만 여러번 중복적으로 계속 사용되는 데이터들은 로그인 토큰, 브라우져 쿠키, 로컬스토리지 등의 기술로 처리를 할 수가 있다.
HTTP의 Request는 클라이언트에서 서버에 일을 시작하게 위해 보내는 메시지다.
Request는 다음과 같이 Start Line, Headers, Body 세 부분으로 나뉜다.
우선 Start Line에 대해서 알아보자 ~ 이 부분도 다시 세 부분으로 나뉜다....ㅠ
ex) GET/ login HTTP/ 1.1
=> GET 메소드로 login 이라는 요청 타겟에 1.1 버젼으로 요청을 보내겠다.
로그인시 서버에 보낼 요청의 예시를 통해 자세하게 알아보자 ~
ex) Body: {
"user_email": "jun.choi@gmail.com"
"user_password": "wecode"
}
Request와 마찬가지로 Response도 크게 세 부분으로 구성되어 있다.
예시를 통해 자세히 알아보자 ~
ex) HTTP/ 1.1 404 Not Found
=> HTTP 1.1 버젼으로 응답하고 있는데, 들어온 요청에 대해서 유저의 정보를 찾을 수 없기 때문에 Not Found 404 상태 메시지를 보낸다.
ex) HTTP/ 1.1 200 SUCCESS
=> HTTP 1.1 버젼으로 응답하고 있는데, 들어온 요청에 대해서 성공했기 때문에 잘 받았다고 200 상태 메시지를 보낸다.
로그인 요청에 대해 성공했을 때 응답의 내용에 대한 예시로 간단히 알아보자 ~
ex)
Body: {
"message": "SUCCESS"
"token": "pskdajflsdkfjasdsld" (암호화된 유저의 정보)
}
자주 사용되는 HTTP 통신 메소드에는 세가지가 있다. (GET, POST, DELETE)
이 세가지 메서드 들은 클라이언트 입장에서 요청의 의도가 담긴 것들이다.
밑에서 더 자세히 알아보자 ~
이름 그대로 서버에서 어떤 데이터를 받아올 때 사용하는 메서드.
데이터를 단순히 받아오기만 할때 사용된다.
GET메서드는 가장 간단하고 자주 쓰이는데 사실 우리가 웹페이지를 띄울 때 필요한 정보들을 모두 GET메서드로 요청을 보내서 받아온 응답을 화면에 띄우는 것이다.
데이터를 생성/ 수정할 때 주로 사용되는 메서드.
데이터를 생성, 수정한 다는 특징 때문에 대부분 요청에 body가 포함되어서 보내진다.
특정 데이터를 서버에서 삭제요청 보낼 때 쓰는 메서드.
위에서 Status Code를 잠시 배웠고 200이니 404니 숫자들을 예시로 잠깐 보았는데 이밖에도 많은 것들이 있다.
간단히 정리해보자 ~
가장 자주 보고싶은 Status Code
요청에 대한 처리가 서버에서 문제없이 이루어지고 나서 오는 응답코드
뭔가를 생성했을 때 잘 생성되었다면 이 코드를 보내준다.
주로 데이터를 수정, 삭제하는 POST메서드 요청에 따라 서버에서 데이터가 잘 생성, 수정되었을 때 보내는 응답코드
요청이 잘못되었을 때 보내는 응답코드.
주로 요청의 Body에 보내는 내용이 잘못되었을 때 사용된다.
유저가 해당 요청을 진행하려면 먼저 로그인을 하거나 회원가입 등이 필요하다는 의미의 응답코드.
ex) wish list, 좋아요 기능은 먼저 회원이 아니면 요청을 보낼 수 없다.
유저가 해당 요청에 대해 권한이 없다는 의미의 응답코드.
서버에서 에러가 났을 때의 응답코드
토큰: 데이터 접근시 인증하는 일종의 신분증, 티켓.
데이터 접근시 권한이 중요하므로 암호화가 되어있음.
쉽게 말하면 버스카드, 교통카드 같은 느낌.
만료기간을 정해서 비활성할 수도 있음.
#3가지만 꼭 기억!
1.HTTP는 컴퓨터 끼리 소통을 위한 통신규약이다.
2.HTTP 통신은 Request(요청)과 Response(응답)으로 이루어진다.
3.HTTP 통신의 매 요청과 응답은 이전 상태를 알지 못한다. (Stateless)