웹서비스 개발자는 HTTP를 꼭 알고 있어야 해요.
HTTP는 HyperText Transfer Protocol의 약자에요. HTTP는 초기화를 좋아해서 매 요청과 응답의 이전 상태를 기억 못해요~
HyperText는 쉽게 말해서 HTML이에요. 문서와 문서가 링크로 연결되도록 하는 태그로 구성된 언어에요.
Transfer는 '전송하다'라는 의미에요. 즉 다른 사람에게 내가 만든 웹사이트를 보내줘야 해요. 그러려면 보내는 주체랑 받는 주체가 있어야 합니다.
Protocol은 내 컴퓨터랑 다른 컴퓨터랑 HTML 파일을 주고받을지에 대한 약속이랍니다.
Request, Response가 HTTP의 핵심 중 핵심!
내가 스포츠 뉴스를 클릭하면 뉴스html을 서버에게 요청한 것이고
서버는 Response 응답을 하여 나에게 뉴스html을 보내준다고 이해했어요.
Request 메세지 구조를 보면 HTTP 요청은 프론트엔드에서 백엔드가 일을 시작하라고 보내는 메세지에요.
이 메세지에는 Start Line, Headers, Body 크게 3가지로 구성되었어요.
1 Start Line에는
1. HTTP Method: 해당 요청이 의도한 액션을 정의하는 부분. 주로 GET, POST, DELETE가 많이 쓰임
POST는 대용량 데이터! 그리고 서버에게 요청을 여러번 하면 다른 응답이 올 수 있어요!
GET은 서버에게 동일한 요청을 여러번 해도 동일한 응답이 와야되요.
2. Request target: 해당 request가 전송되는 목표 url
3. HTTP Version: 말 그대로 사용되는 HTTP 버전을 뜻한다. 주로 1.1 버전이 널리 쓰임
POST /scan HTTP/1.1
해석: POST 메소드로 scan 이라는 요청 타겟에 HTTP 1.1 버전으로 요청을 보내겠다!
Headers는 Key: Value 값으로 되어있다.
Headers: {
Host: 요청을 보내는 목표(타겟)의 주소. 즉, 요청을 보내는 웹사이트의 기본 주소가 된다
(ex. www.apple.co.kr)
User-Agent: 요청을 보내는 클라이언트의 대한 정보 (ex. chrome, firefox, safari, explorer)
Content-Type: 해당 요청이 보내는 메세지 body의 타입 (ex. application/json)
Content-Length: body 내용의 길이
Authorization: 회원의 인증/인가를 처리하기 위해 로그인 토 큰을 Authroization 에 담는다
}
Body는 해당 요청의 실제 내용. 주로 Body는 POST 메소드를 사용!
ex) 로그인 시에 서버에 보낼 요청의 내용
Body: {
"user_email": "msjulyone@gmail.com"
"user_password": "feelsogood"
}
Response 메시지 구조 역시 크게 세 부분!
Status Line, Headers, Body로~~
Status Line은 요청에대한 처리상태를 클라이언트(프론트엔드)한테 일려줍니다!
HTTP/1.1 404 Not Found
해석: HTTP 1.1 버전으로 응답하고 있는데, 프론트엔드에서 보낸 요 청(ex. 로그인 시도)에 대해서
유저의 정보를 찾을 수 없기 때문에(Not Found) 404 상태 메 세지를 보낸다.
HTTP/1.1 200 SUCCESS
해석: HTTP 1.1 버전으로 응답하고 있는데, 프론트엔드에서 보낸 요 청에 대해서 성공했기 때문에 200 상태 메세지를 보낸다.
Headers는 요청의 헤더와 동일해요!
Body에 가장 많은 데이터 타입은 JSON이에요!
ex) 로그인 요청에 대해 성공했을 때 응답의 내용
Body: {
"message": "SUCCESS"
"token": "kldiduajsadm@9df0asmzm" (암호화된 유저의 정보)
}