HTTP 는 컴퓨터 끼리의 소통을 위한 통신규약이다.
HTML을 전송할때 지켜야 하는 규약(약속)
요즘은 데이터를 주고 받을때도 많이 쓴다. 프론트와 백이 데이터를 주고 받을때 사용
HTML (Hyper Text Markup Language)
Hyper Text = 문서와 문서가 링크로 연결되어 있음을 뜻함
전송하다 = 물건이나 편지 따위를 보내다
HTML로 만든 웹페이지 문서(파일)을 보낸다
컴퓨터끼리 어떻게 HTML 파일을 주고 받을 지에 대한 소통 방식 또는 약속
인간의 소통방식처럼 컴퓨터끼리의 소통방식도 있다. 대신 말이아닌 메세지의 형식으로 요청하고 응답한다.
HTTP는 request가 없으면 먼저 response를 보낼 수는 없다.
서버에서 김코드가 맞는지 검증을 한번 한다
HTTP개별 통신은 모두 독립이어서, 과거의 HTTP통신의 결과(상태)를 보존하지 않는다.
기억력이 없다 = 이 전에 뭐가 이루어졌는지 기억이 없다.
Stateful (기억을 하는) 상태를 예를 들자면 아래 카페와 같다.
반면, Stateless는 기존 기억이 없다.
이러한 상태에서 요청을 보내려면, 한번에 보내야 하는데 서버는 바보라서 가격을 물어보면 가격만 대답하고, 시럽추가 하면 시럽만 얘기한다.
그러니까 요청을 할때 필요한 응답을 받아서 저장해서 담아서 같이 보내야 한다. (아래와 같이!)
실제 응용:
매 통신마다 사전에 필요한 내용을 모두 입력해야한다.
요청을 보낼때 정보를 TOKEN에 담아서 보내는 것이다.
- 자동로그인 - 로그인 시 토큰을 받아 로컬스토리지에 저장한다.
GET
- 데이터를 받아오기만 할 때 사용
- 웹페이지에 접속해서 필요한 데이터를 불러올 때 사용
POST
- 데이터를 생성 / 수정할 때 사용. 정보를 담아서 보낼때
- Body가 담겨서 가니까 Body에 담는 내용이 핵심
- ex) 회원가입, 댓글 작성, 글 작성
DELETE
- 서버에 저장된 특정 데이터를 삭제할 때 사용. 지울때
- ex) 회원탈퇴, 댓글 삭제, 글 삭제
실제사용 예) 아이패드를 구매하고싶다.
장바구니 목록 가져올 때 GET 사용.
메세지는 이렇게 생김:
header에 난 누구인지 정보를 같이보내줌 (인증 토큰)
가져오기만 할거니까 GET은 BODY 필요없음.
Response에 보면 200 OK 있고 Cart 안에 내가 담은것들에 대한 정보가 들어 있음!!
똑같은 타겟이지만 보내는 방식이 다름
Status Code가 200 -> 201로 변경됨
요청 성공 했고 만들어졌다는 의미
뭐 담을 지를 보내야하니까 BODY를 보내야한다.
잘 담겼다고 Response가 온다
똑같은 타겟에 delete을 보낸다
204라는 응답이 온다
요청은 성공했지만 내가 보내줄 컨텐츠는 없다는 의미 (지웠으니까 없음)
보내줄 내용이 없으니까 BODY가 없어도 된다
204는 BODY가 실종된다는걸 기억하자!
200:OK
201:Created
204:No Content
400:Bad Request
401:Unauthorized
403:Forbidden
404:Not Found
400번대의 Client Error는 예측한, solution이 있는 에러지만 이건 예측 하지 못한, 에러 처리가 안된 에러ㅠㅠ
500:Internal Server Error