TIL09. HTTP

박경철·2021년 5월 22일
0

TIL

목록 보기
9/19

1. HTTP란?

HTTP는 HyperText Transfer Protocol의 약자이며, 컴퓨터들끼리 HTML 파일을 주고받을 수 있도록 하는 약속이다.

1.1 HyperText

HTTP에서 HyperText는 HTML(HyperText Markup Language)의 HyperText와 의미가 동일하다.
(HTML : 문서와 문서가 링크로 연결되도록 하는 태그로 구성된 언어)

1.2 Transfer

사전적 의미로 "전송하다"라는 의미이며 우리가 만든 웹사이트를 다른 사람들과 공유하기 위해서 다른 컴퓨터에게 전송해야 한다. 또한, 보내는 주체와 받는 주체가 있다는 것이 특징이다.

1.3 Protocol

물리적으로 떨어진 컴퓨터끼리 어떻게 HTML 파일을 주고 받을지 약속으로 통신 규약이라는 의미를 가진다.

2. HTTP 특징

2.1 Request / Response(요청 / 응답)

보내는 주체는 받는 주체에게 요청을 보내고, 받는 주체는 요청을 보낸 주체에게 응답을 보낸다.

2.2 Stateless

각각의 HTTP 통신(요청/응답)은 독립적이기 때문에 과거의 통신(요청/응답)에대한 내용을 전혀 알지 못 한다. 매 통신마다 필요한 모든 정보를 담아서 요청을 보내야 한다.

3. Message 구조

3.1 Request Message 구조

(1) Start Line

  • HTTP Method : 요청이 의도한 액션을 정의하는 부분(get, post, delete 등..)
  • Request target : request가 전송되는 목표 url
  • HTTP Version : HTTP의 Version

(2) Headers

Key : Value 값으로 되어 있으며 해당 요청에 대한 추가 정보(메타 데이터)를 담고 있다.

  • Host : 요청을 보내는 목표의 주소
  • User-Agent : 요청을 보내는 클라이언트의 정보
  • Content-Type : 요청이 보내는 메세지 body의 Type
  • Authorization : 로그인 토큰을 Authroization에 담는다

(3) Body

해당 요청의 실제 내용을 담고 있다.

3.2 Response 메시지 구조

(1) Status Line

요청에 대한 처리상태를 클라이언트에게 알려주면서 내용을 시작한다.

  • HTTP Version : HTTP의 버전
  • Status Code : 응답 메세지의 상태 코드
  • Status Text : 응답 메세지의 상태를 간략하게 설명해주는 텍스트

(2) Headers

요청과 마찬가지로 응답의 추가 정보(메타데이터)를 담고 있다.

(3) Body

요청의 Body와 일반적으로 동일하다. 요청의 메소드에 따라 Body가 항상 존재하지 않듯이, 응답도 때에 따라 데이터를 전송할 필요가 없을 경우엔 Body가 없을 수도 있다.

4. HTTP Request Methods

  • Get

    어떤 데이터를 Server로 부터 받아 올때 주로 사용한다.

  • Post

    데이터를 생성 / 수정 할 때 주로 사용되는 메소드

  • Delete

    특정 데이터를 Server에서 삭제 요청을 보낼때 쓰는 메소드

5. Response Status Codes

  • 200:OK

    문제없이 요청에 대한 처리가 이루어지고 나서 오는 응답코드

  • 201:Created

    무언가가 잘 생성되었을 때 오는 응답코드

  • 400:Bad Request

    해당 요청이 잘못되었을 때 보낸느 응답코드
    주로 요청의 Body에 보내는 내용이 잘못되었을 때 사용되는 코드

  • 401:Unauthorized

    유저가 해당 요청을 진행하려면 먼저 로그인을 하거나 회원가입이 필요하다는 응답코드

  • 403:Forbidden

    유저가 해당 요청에 대한 권한이 없다는 뜻의 응답코드

  • 404:Not Found

    요청된 URI가 존재하지 않다는 응답코드

  • 500:Internal Server Error

    Server에서 에러가 났을 때의 응답코드

profile
안녕하세요!

0개의 댓글

관련 채용 정보