통신과 HTTP
HTTP는 컴퓨터 끼리 통신(HTML 파일을 어떻게 주고 받을 것인가)하는 하나의 방법 중 하나이다. (HyperText Transfer Protocol)
1. Request / Response ( 요청 / 응답 )
메세지의 형식으로 요청하고 응답

2. Stateless
HTTP 개별 통신은 모두 독립적이어서, 과거의 HTTP 통신의 결과(상태)를 보존하지 않는다!
쉽게 말해, 각각의 요청(request -> response)은 서로의 존재를 모른다.

이전의 상태를 전혀 알지 못한다는 뜻. 따라서 매 통신마다 필요한 모오오든 정보를 담아서 요청을 보내야 한다!
-
상당히 비효율적으로 보이지만 서버 구현이 간단해진다는 장점도 존재한다.
-
따라서 로그인, 장바구니 등의 기능 구현을 위해 쿠키,세션,로컬 스토리지, 로그인 토큰 등의 기술이 필요해진다.
Request / Response
1. Request 메세지 구조

- Host: 요청을 보내는 목표(타겟)의 주소. 즉, 요청을 보내는 웹사이트의 기본 주소가 된다
(ex. www.apple.co.kr)
- User-Agent: 요청을 보내는 클라이언트의 대한 정보 (ex. chrome, firefox, safari, explorer)
- Content-Type: 해당 요청이 보내는 메세지 body의 타입 (ex. application/json)
- Content-Length: body 내용의 길이
- Authorization: 회원의 인증/인가를 처리하기 위해 로그인 토큰을 Authroization 에 담는다
2. Response 메세지 구조
요청을 알아 들어었는지 못알아들었는지!

-
404 Not Found - 실패!
-
200 OK! - 성공!
HTTP Request Methods
- 자주 사용되는 HTTP 통신 메소드 세가지를 정리해보자! ( GET , POST , DELETE )
1. GET
2. POST
-
데이터를 생성 / 수정할 때 사용
-
프런트 (클라이언트)에서 body 작성
3. DELETE
Response Status Codes
실제 프로젝트를 진행할 때 가장 많이 보게 될 응답의 상태 코드 들이다. Status Code의 숫자에 각각 의미가 내포되어 있다. 이 Status Code 만 보아도 응답이 제대로 됐는지 안 됐는지를 파악할 수 있다.
200: OK
- 가장 자주 보게되는 Status Code
- 문제없이 요청에 대한 처리가 백엔드 서버에서 이루어지고 나서 오는 응답코드
- 우리는 모두 200 OK 를 원한다
201: Created
- 무언가가 잘 생성되었을 때에(Successfully Created) 오는 Status Code
- 대게 POST 메소드의 요청에 따라 백엔드 서버에 데이터가 잘 생성 또는 수정 되었을 때에 보내는 코드
400: Bad Request
- 해당 요청이 잘못되었을 때 보내는 Status Code
- 주로 요청의 Body에 보내는 내용이 잘못되었을 때 사용되는 코드
ex) 전화번호를 보내야 하는데 숫자가 아닌 문자열의 주소가 대신 Body에 담겼을 경우
401: Unauthorized
- 유저가 해당 요청을 진행하려면 먼저 로그인을 하거나 회원가입이 필요하다는 의미
ex) wish list, 좋아요 기능은 회원이 아니면 요청을 보낼 수 없음
403: Forbidden
- 유저가 해당 요청에 대한 권한이 없다는 뜻
- 접근 불가능한 정보에 접근했을 경우
ex) 오직 유료회원만 접근할 수 있는 데이터를 요청 했을 때
404: Not Found
500: Internal Server Error
- 서버에서 에러가 났을 때의 Status Code
- API 개발을 하는 백엔드 개발자들이 싫어하는 코드
(프론트는 내 잘못 아니라는 것을 알 수 있는 코드)
보다 더 자세한 HTTP Response Status Codes MDN link

요약
- HTTP 는 컴퓨터 끼리의 소통을 위한 통신규약이다.
- HTTP 통신은 Request(요청)과 Response(응답)으로 이루어 진다.
- HTTP 통신의 매 요청과 응답은 이전 상태를 알지 못 한다. (Stateless)