[Web #8] HTTP를 알고 주소 쓰기

Kayoung Kim·2021년 7월 18일
0

Web Development

목록 보기
9/18
post-thumbnail

HTTP

HyperText Transfer Protocol

  • HyperText
    HTML (HyperText Markup Language)
    Hyper Text = 문서와 문서가 링크로 연결되어 있음을 뜻함
  • Trnasfer
    '전송하다' '물건이나 편지 따위를 보내다'
    HTML로 만든 웹페이지 문서(파일)을 보낸다.
    보내는 주체와 받는 주체가 있다는 것이 특징이다.
  • Protocol
    컴퓨터끼리 어떻게 HTML 파일을 주고 받을지에 대한 소통 방식 또는 약속

    ➡️ HTTP는 컴퓨터들끼리 HTML파일을 주고받을 수 있도록 하는 소통방식 또는 약속이다.

HTTP의 특징

  1. request(요청) / response(응답)
  • 소통의 핵심은 요청과 응답
  • 인간의 소통방식이 컴퓨터끼리의 소통방식에 적용된 것으로 말이 아닌 메세지의 형식으로 요청하고 응답한다.
    클라이언트: "서버야, 나는 00이야. 로그인 시켜줄래?"
    서버: "로그인 성공했습니다! 서비스를 누리세요"
  1. Stateless (상태 없음)
  • HTTP 개별 통신은 모두 독립적이어서, 과거의 HTTP 통신의 결과(상태)를 보존하지 않는다.
    클라이언트: "영상 보여줄래?"
    서버: "로그인 해주세요"
    클라이언트: "나 아까 로그인했어. 영상 보여줄래?"
    서버: "모르겠습니다. 로그인해주세요"

장점: 각각의 통신들의 상태를 저장할 필요가 없기 때문에(정보가 많지 않기 때문에) 서버 디자인이 간단해지는 장점이 있다. 개별 응답에만 요청하면 된다.

단점: 매 통신마다 사전에 필요한 모든 정보를 담아서 요청을 보내야만 한다.
➡️ 따라서, 만일 여러번의 통신(요청/응답)의 진행과정에서 연속된 데이터 처리가 필요한 경우(ex. 온라인 쇼핑몰에서 로그인 후 장바구니 기능)를 위해 로그인 토큰 또는 브라우저의 쿠키, 세션, 로컬스토리지 같은 기술이 필요에 의해 만들어졌다.

Request / Response

request 메세지 구조

  1. Start Line: 요청의 첫번째 줄
    1) HTTP method: 요청이 의도한 액션을 정의 (GET, POST, DELETE)
    2) Request target: 요청이 전송되는 목표 url
    3) HTTP version: HTTP 버전
    ex: GET/login HTTP/1.1 : GET 메소드로 login 이라는 요청 타겟에 HTTP 1.1 버전으로 요청을 보내겠다!

  2. Headers: 요청의 추가 데이터(메타 데이터)를 담고 있는 부분으로 {key: value} 값으로 되어있다.
    Header : {
    Host: www.wecode.co.kr
    User-Agent : chrome
    Content-Type : application/json
    Content-length
    ..
    }

  3. Body: 요청의 실제 내용. 주로 POST 메소드가 사용된다.
    Body : {
    "username" : "wecode"
    "email" : wecode@gmail.com
    }

HTTP Request methods

  • GET
    데이터를 받아오기만 할 때, 웹페이지에 접속해서 필요한 데이터를 불러올 때 사용
  • POST
    데이터를 생성/수정할때 사용. 바디에 담는 내용이 핵심!
  • DELETE : 서버에 저장된 특정 데이터를 삭제할 때 사용

response 메세지 구조

  1. Start Line: 요청에 대한 처리상태를 클라이언트에게 알려줌
    ex: HTTP/1.1 404 Not Found
    HTTP 1.1 버전으로 응답하고 있는데, 프론트엔드에서 보낸 요청(ex. 로그인 시도)에 대해서 유저의 정보를 찾을 수 없기 때문에(Not Found) 404 상태 메세지를 보낸다.

status code

success
200:ok
201: created

Error
400: Bad requeset
401: unauthorized 권한없음 누군지 몰라
403: forbidden 권한없음 누군지 알아
404: not found

server error
500 Internal server error 서버 터짐..

  1. Header: 응답에서만 사용하는 헤더 정보 (user-agent 대신 server 헤더 사용)
  2. Body: 요청의 Body와 일반적으로 동일. 요청의 메소드에 따라 Body가 항상 존재하지 않듯이 응답도 응답의 형태에 따라 데이터를 전송할 필요가 없는 경우엔 Body가 없을 수도 있다. 가장 많이 사용되는 Body 의 데이터 타입은 JSON(JavaScript Object Notation) 이다.
  1. HTTP 는 컴퓨터 끼리의 소통을 위한 통신규약이다.
  2. HTTP 통신은 Request(요청)과 Response(응답)으로 이루어 진다.
  3. HTTP 통신의 매 요청과 응답은 이전 상태를 알지 못 한다. (Stateless)

0개의 댓글