공부노트/HTTP
HTTP
Reload0213
2021. 8. 19. 23:22
1. HTTP 란?
- Hyper Text Transfer Protocol
- Hyper Text
- 문서와 문서가 연결되도록 하는 태그로 구성된 언어 - Transfer
- 전송한다 - Protocol
- 어떻게 HTML파일을 주고 받을지에 대한 약속!
- Hyper Text
2. HTTP의 특징
- Request 요청
- Response 응답
요청 : 구글에 맛있는 사진 보여달라고 검색
응답 : 맛있는 사진 띄워줄께
요청 : 대화방에 들여보내줘
응답 : 어 들여보내줬어 - Stateless
- 상태가 없다는 뜻 ! 즉 모든 요청이 독립적이라는 것
ex.
요청 1 줌 로그인
응답 1 로그인 200 ok
요청 2 미팅 접속
응답 2 미팅 접속 ok
여기서! 미팅에 접속 하는 건 로그인을 해야 가능하다.
근데 A라는 사람이 이전에 로그인 했다는 사실은 서버가 알 수 없다.
실생활 예로, 우리가 야구장 들어갈 때 검표원한테 표를 보여주고 들어가지만 검표원은 우리가 실제로 돈을 냈는지 안 냈는지는 모른다. 대신 그 증거로 입장표를 보여주면 아, 이사람 돈 냈구나 하고 알 수 있는 것
그래서 서버에서도 '나 아까 로그인 했어, 그래서 미팅 접속해도 돼' 와 같은 티켓을 보내준다
2-1. Request / Response
1. Resquest
: 프론트에서 백엔드에 데이터 처리를 시작하게 하기 위해서 보내는 메세지
구성
구성내용
Start Line | GET /login HTTP/1.1 |
Headers | 메타 데이터 |
Body | 우리가 주고 받고자 하는 내용 |
1) Start Line
- GET /login HTTP/1.1
-> GET 메소드로 login 이라는 요청 타겟에 HTTP 1.1 버전으로 요청
2) Headers
- 호스트는 누구이며,
요청의 종류가 뭐고(이미지인지 텍스트인지 등)
이 서버에 접속해도 되는 사람인지 등등 메타 데이터를 담고 있다
3) Body
- 해당 요청의 실제 내용
- POST 에서 주로 사용한다
2. Response
: 요청에 대한 처리 상태를 클라이언트에게 전달
구성
구성내용
Status Line | HTTP/1.1 404 Not Found |
Headers | 메타 데이터 |
Body | 우리가 주고 받고자 하는 내용 |
1) Status Line
- HTTP/1.1 404 Not Found
-> HTTP 1.1 버전으로 응답하고 있는데, 프론트엔드에서 보낸 요청(ex. 로그인 시도)에 대해서 유저의 정보를 찾을 수 없기 때문에(Not Found) 404 상태 메세지를 보낸다.
2) Headers
- 호스트는 누구이며,
요청의 종류가 뭐고(이미지인지 텍스트인지 등)
이 서버에 접속해도 되는 사람인지 등등 메타 데이터를 담고 있다
3) Body
- 해당 요청의 실제 내용
- POST 메소드에서 주로 사용한다
- 가장 많이 사용되는 Body 의 데이터 타입은 JSON(JavaScript Object Notation) 이다
2-2. HTTP의 메소드
프론트의 입장에서 요청의 의도가 담겼다고 생각하면 된다
1) GET
- 어떤 데이터를 서버로 부터 받아(GET)올 때 주로 사용하는 메소드
- 데이터를 받아오기만 할 때 사용된다
ex. 애플스토어 접속 > 제품 확인 페이지
너네 가지고 있는 상품 뭐 있는지 좀 보여줘
그냥 요청만 하는 것! 클라이언트로 인해 DB에 뭔가 영향이 가지 않음
또는
쇼핑몰 장바구니에 있는 내 장바구니 내역만 조회
2) POST
- 데이터를 생성 / 수정 할 때 주로 사용되는 메소드
- 데이터를 생성 및 수정 할 때 많이 사용되기 때문에 대부분의 경우 요청에 body가 포함되서 보내진다
ex.
인스타그램 서버에 내가 먹스타그램 올렸을 때 > 인스타그램 데이터가 바뀜
인스타그램에 없던 데이터인데 내가 업로드 하면서 데이터가 생긴 것!
그럼 그 데이터는 BODY부분에 담겨져서 들어간다
또는
쇼핑몰 장바구니에 담고 싶은 것 하나 더 추가
3) DELETE
- 특정 데이터를 서버에서 삭제할 때 사용되는 메소드
장바구니에 있는 걸 삭제
3. Response Status Codes
400 : 클라이언트가 아예 잘못된 정보 입력했을 때
(이메일 칸에 유저 네임 넣었다든지)
401 : 인증이 안됐다는 것 (로그인 안하고 마이페이지 보려고 하는거)
403 : 로그인은 했는데 권한이 없을 때 (넷플릭스 결제 안했는데 영상 보려고 할 때)
404 : url 이 없을 때 (프론트랑 같이 얘기 나눈 후 백엔드에서 결정)
500 : 서버에서 잘못 된 거