[TIL] HTTP ver.1

📌 HTTP란?
하이퍼 텍스트를 빠르게 교환하기 위한 프로토콜의 일종으로, 서버와 클라이언트 사이에서 어떻게 메시지를 교환할지를 정해놓은 규칙
HyperText - 문서와 문서가 링크로 연결되어 있음을 뜻함
Transfer - HTML로 만든 웹페이지 문서(파일)을 보낸다
Protocol - 컴퓨터끼리 어떻게 HTML 파일을 주고 받을 지에 대한 소통 방식 또는 약속
쉽게 생각하면 웹에서 통신을 할 때 어떤 형식으로 통신을 하자고 정해놓은 약속
📌 HTTP 특징
- connectionless - http 통신은 리소스 낭비를 피하기 위해 연결을 유지하지 않는 것을 기본 동작으로 가진다.
- stateless - Http 개별 통신은 모두 독립적이어서, 과거의 HTTP 통신의 결과(상태)를 보존하지 않는다. 매 통신마다 사전에 필요한 정보를 담아서 요청을 보내야 한다.
📌 HTTP 메시지
HTTP는 요청(Request)과 응답(Response)으로 구성되어 있고, 클라이언트가 요청을 하면 서버가 응답을 하는 구조이다.

🚀 Request
요청(Request)은 클라이언트가 서버로 전달하는 메시지
Request는 요청 라인(Request line), 요청 헤더(Request Headers), 공백라인, 요청 바디(Request Body)로 나뉜다.
요청 라인 : 요청의 첫번째 줄 / HTTP Method, URI, HTTP version로 구성되어 있음
- HTTP Method : 해당 요청이 의도한 액션을 정의한 부분
- GET : 데이터를 받아오기만 할 때 사용 / 웹페이지에 접속해서 필요한 데이터를 불러올 때 사용
- POST : 데이터를 생성/수정할 때 사용 , Body에 담는 내용이 핵심!
- DELETE : 서버에 저장된 특정 데이터를 삭제할 때 사용
- URI : 해당 request가 전송되는 목표 url
- HTTP version : HTTP 버전, 주로 1.1버전이 널리 쓰인다.
HTTP Request Methods
요청 헤더: 해당 요청에 대한 추가 정보를 담고 있는 부분
- Host: 클라이언트가 요청한 도메인 정보
- Accept: 웹 서버로부터 수신되는 데이터 중 웹 브라우저가 처리할 수 있는 데이터의 형식 정의
- User-Agent: 사용자 웹 브라우저 종류 및 버전 정보
- Cookie: 클라이언트 로컬에 저장되는 key-value쌍의 데이터 파일
- Content-Type: 해당 요청이 보내는 메시지 body 타입
- Authorization: 회원의 인증/인가를 처리하기 위한 로그인 토큰
- Referer: 경유한 웹 사이트에 대한 정보
요청 바디: 클라이언트가 서버에 실제 요청한 내용
🚀 Response
응답(Response)는 요청에 대한 서버의 답변이다.
Response는 응답 라인(request line), 응답 헤더(Response Headers),공백라인, 응답 바디(Response Body)로 나뉜다.
응답 라인: 응답의 상태 줄 / HTTP Version, Status Code, 로 구성
- HTTP Version : 요청의 HTTP버전과 동일
- Status Code : 응답 메시지의 상태 코드
- Success - 200 : ok / 201 : Created
- Error - 400 : Bad Request/ 401 : Unauthorized / 403 : Forbidden / 404 : Not Found
- Server Error - 500 : Internal Server Error
- Status Text : 응답 메시지의 상태를 간략하게 설명해주는 텍스트
HTTP Response status code
응답 헤더: 요청의 헤더와 동일하며 응답의 추가 정보를 담고 있다.
응답 바디: 실제 응답받은 메시지(데이터)
출처 : https://developer.mozilla.org/ko/docs/Web/HTTP