[TIL] http

양주영·2021년 11월 11일
0

TIL

목록 보기
10/13

▶️ HTTP란?

HTTPHyperText Transfer Protocol의 약자이다.
컴퓨터들끼리 HTML 파일을 주고받을 수 있도록 하는 소통방식 또는 약속이다.

▶️ HTTP의 특징

특징으로 크게 두 가지가 있다.

1️⃣ Request/ Response(요청/응답)

HTTP 통신의 핵심은 요청과 응답이다.
HTTP의 세번째 키워드 Transfer을 하려면, 전송은 보내는 주체와 받는 주체가 있어야 한다.
보내는 주체는 받는 주체에게 요청을 보내고, 받는 주체는 요청을 보낸 주체에게 응답을 보낸다.


  • Request의 메시지 구조
  1. Start Line : 요청의 첫번째 줄. 세 부분으로 구성되어 있다.

    1. HTTP Method: 해당 요청이 의도한 액션을 정의하는 부분. 주로 GET, POST, DELETE가 많이 쓰임
    2. Request target: 해당 request가 전송되는 목표 url
    3. HTTP Version: 말 그대로 사용되는 HTTP 버전을 뜻한다. 주로 1.1 버전이 널리 쓰임


      GET /login HTTP/1.1
      해석: GET 메소드로 login 이라는 요청 타겟에 HTTP 1.1 버전으로 요청을 보내겠다!
  2. Headers : 해당 요청에 대한 추가 정보(메타 데이터)를 담고 있는 부분

    Key: Value 값으로 되어있다 (JavaScript의 객체, Python의 딕셔너리 형태라고 보면 된다)
    자주 사용되는 Headers 의 정보에는 다음이 있다

  3. Body : 해당 요청의 실제 내용. 주로 Body를 사용하는 메소드는 POST이다.

    ex) 로그인 시에 서버에 보낼 요청의 내용
    Body: {
    "user_email": "wecode@gmail.com"
    "user_password": "wecode"
    }


  • Response의 메시지 구조
  1. Status Line : 응답의 상태 줄

    1. HTTP Version: 요청의 HTTP버전과 동일
    2. Status Code: 응답 메세지의 상태 코드
    3. Status Text: 응답 메세지의 상태를 간략하게 설명해주는 텍스트
  1. Headers : 요청의 헤더와 동일. 응답의 추가 정보(메타 데이터)를 담고 있음
  2. Body : 요청의 Body와 일반적으로 동일하다. 응답의 형태에 따라 존재하지 않을 수 있다.

    ex) 로그인 요청에 대해 성공했을 때 응답의 내용
    Body: {
    "message": "SUCCESS"
    "token": "kldiduajsadm@9df0asmzm" (암호화된 유저의 정보)
    }



2️⃣ Stateless

매우 중요한 특징인Stateless(상태 없음)이다.
=> 서버가 클라이언트의 상태를 보존하지 않는다.
즉, 매번 요청에 모든 상태값을 전달해줘야 한다.
각각의 HTTP 통신(요청/응답)은 독립적이기 때문에 과거의 통신에 대한 내용을 전혀 알지 못한다. 이전의 상태를 전혀 알지 못한다는 것은 매 통신마다 필요한 모든 정보를 담아서 요청을 보내야 한다는 것과 같다.
때문에 여러번의 통신의 진행과정에서 연속된 데이터 처리가 필요한 경우(ex. 온라인 쇼핑몰에서 로그인 후 장바구니 기능)를 위해 로그인 토큰 또는 브라우저의 쿠키, 세션, 로컬 스토리지와 같은 기술이 필요에 의해 만들어졌다.



크게 세 가지만 기억하자! 🤔

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

profile
뚜벅뚜벅

0개의 댓글