Reload0213 2021. 8. 19. 23:22

1. HTTP 란?

  • Hyper Text Transfer Protocol
    • Hyper Text
      - 문서와 문서가 연결되도록 하는 태그로 구성된 언어
    • Transfer
      - 전송한다
    • Protocol
      - 어떻게 HTML파일을 주고 받을지에 대한 약속!

2. HTTP의 특징

  1. Request 요청
  2. Response 응답
    요청 : 구글에 맛있는 사진 보여달라고 검색
    응답 : 맛있는 사진 띄워줄께 
    요청 : 대화방에 들여보내줘
    응답 : 어 들여보내줬어 

  3. 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 : 서버에서 잘못 된 거

 

출처 : https://velog.io/@may_soouu