Home HTTP의 특징과 구조
Post
취소

HTTP의 특징과 구조

HTTP

HTTP(HyperText Transfer Protocol)

  • HyperText: 문서와 문서가 링크로 연결되도록 하는 태그로 구성된 언어
  • Transfer: 전송하다라는 의미. 보내는 주체와 받는 주체가 있다는 것이 큰 특징
  • Protocol: 컴퓨터 끼리 어떻게 HTML파일(HyperText)을 주고 받을지에 대한 약속, 통신규약

HTTP의 특징

  • Request / Response (요청 / 응답)

    • 요청을 보내면 응답이 와야함
    • 유튜브 -> 영상클릭(요청) -> 응답(영상보기)
  • Stateless

    • 상태 없음을 의미
    • 매 통신마다 필요한 모든 정보를 담아서 요청을 보내야 함
    • 온라인 쇼핑몰에서 로그인 후 장바구니 기능)를 위해 로그인 토큰 또는 브라우저의 쿠키, 세션, 로컬스토리지

Request / Response

  • 프론트엔드에서 백앤드에게 데이터를 요청하고 백엔드는 요청을 처리해서 응답
  • 요청과 응답에 대한 구조와 메세지를 잘 파악하면 대부분의 에러를 해결 가능

Request 메세지 구조

  • Start Line: 요청의 첫번째 줄

    • HTTP Method: 해당 요청이 의도한 액션을 정의하는 부분. 주로 GET, ` POST, DELETE`가 많이 쓰임
    • Request target: 해당 request가 전송되는 목표 URL
    • HTTP Version: 말 그대로 사용되는 HTTP 버전 의미. 주로 1.1 버전이 널리 쓰임
    1
    2
    
    GET /login HTTP/1.1
    # 해석: GET 메소드로 login 이라는 요청 타겟에 HTTP 1.1 버전으로 요청
    
  • Headers: 메타 데이터(해당 요청에 대한 추가 정보)를 담고있는 부분

    • Key: Value 값으로이루어짐
    • Host: 요청을 보내는 목표(타겟)의 주소. 즉, 요청을 보내는 웹사이트의 기본 주소가 됨
      • www.git.com
    • User-Agent: 요청을 보내는 클라이언트의 대한 정보
      • chrome, safari
    • Content-Type: 해당 요청이 보내는 메세지 body의 타입
      • application/json
    • Content-Length: body 내용의 길이
    • Authorization: 회원의 인증/인가를 처리하기 위해 로그인 토큰을 Authroization 에 담음
    1
    2
    3
    4
    5
    6
    7
    
    Headers: {
        Host:
        User-Agent:
        Content-Type:
        Content-Length:
        Authorization:
    }
    
  • Body: 해당 요청의 실제 내용

1
2
3
4
//예시: 로그인 시에 서버에 보낼 요청의 내용
Body: {
"user_email":"kangsick98@gmail.com" "user_password": "kangsick98"
}

Response 메시지 구조

  • Status Line: 응답의 상태 줄

    • HTTP Version: 요청의 HTTP버전과 동일
    • Status Code: 응답 메세지의 상태 코드
    • Status Text: 응답 메세지의 상태를 간략하게 설명해주는 텍스트
    1
    2
    3
    4
    5
    6
    7
    
    HTTP/1.1 404 Not Found
    # 해석: HTTP 1.1 버전으로 응답하고 있는데, 프론트엔드에서 보낸 요청(ex. 로그인 시도) 대해서
    # 유저의 정보를 찾을  없기 때문에(Not Found) 404 상태 메세지를 보냄
    
    HTTP/1.1 200 SUCCESS
    # 해석: HTTP 1.1 버전으로 응답하고 있는데, 프론트엔드에서 보낸 요청에 대해서 성공했기 때문에
    # 200 상태 메세지를 보냄
    
  • Headers: 메타 데이터(해당 요청에 대한 추가 정보)를 담고있는 부분. 응답에서만 사용되는 헤더의 정보들이 있습니다.

    • 요청하는 브라우저의 정보가 담긴 User-Agent 대신, Server 헤더가 사용
  • Body: 해당 요청의 실제 내용

    • 요청의 메소드에 따라 Body가 항상 존재하지 않듯이 응답도 응답의 형태에 따라 데이터를 전송할 필요가 없는 경우엔 Body가 없을 수도 있습니다.
    • 가장 많이 사용되는 Body 의 데이터 타입은 ‘JSON(JavaScript Object Notation)’
    1
    2
    3
    4
    5
    
    //로그인 요청에 대해 성공했을 때 응답의 내용
    Body: {
        "message": "SUCCESS"
        "token": "siwqab@7dw0hjrmf" (암호화된 유저의 정보)
    }
    
This post is licensed under CC BY 4.0 by the author.