post-thumbnail

사진출처

HTTP란?

HTTP는 HyperText Transfer Protocol의 약자이다.

HTTP는 인터넷 상에서 클라이언트와 서버가 자원(HTML)을 주고 받을 때 쓰는 통신 규약이다.

HTTP의 특징

1. Request / Response (요청 / 응답)

클라이언트와 서버들은 메시지 교환에 의해 통신한다.

클라이언트(웹 브라우저)에서 서버에게 데이터를 요청(Request)하고 서버는 요청을 처리해서 응답(Response)을 준다.

2. Stateless(상태없음)

HTTP 통신의 매 요청과 응답은 이전 상태를 알지 못 한다. 매 통신마다 필요한 모든 정보를 담아서 요청을 보내야 한다.

따라서, 만일 여러번의 통신(요청/응답)의 진행과정에서 연속된 데이터 처리가 필요한 경우를 위해 로그인 토큰 또는 브라우저의 쿠키, 세션, 로컬스토리지 같은 기술이 만들어졌다.


Request & Response

1. Request 메세지 구조

HTTP 요청은 사실 프론트엔드(클라이언트) 에서 백엔드(서버)에 일(데이터 처리)을 시작하게 하기 위해 보내는 메세지다.

이 메세지의 구조는 크게 세 부분으로 구성되어있다.

img

사진출처

  1. Start Line: 요청의 첫번째 줄, 세 부분으로 구성되어 있음
    • HTTP Method: 해당 요청이 의도한 액션을 정의하는 부분
    • Request target: 해당 request가 전송되는 목표 url
    • HTTP Version: 사용되는 HTTP 버전, 주로 1.1 버전
  2. Headers: 해당 요청에 대한 추가 정보(메타 데이터)를 담고있는 부분
    • Key: Value 값으로 이루어짐(파이썬의 딕셔너리 형태)
    • 담아지는 값들!
      • Host: 요청을 보내는 목표(타겟)의 주소(ex. www.apple.co.kr)
      • User-Agent: 요청을 보내는 클라이언트의 대한 정보 (ex. chrome)
      • Content-Type: 해당 요청이 보내는 메세지 body의 타입 (ex.application/json)
      • Content-Length: body 내용의 길이
      • Authorization: 회원의 인증/인가를 처리하기 위한 로그인 토큰을 담는 곳
  3. Body: 해당 요청의 실제 내용. 주로 Body를 사용하는 메소드는 POST

2. Response 메시지 구조

HTTP 규약에 따른 응답의 구조도 또한 크게 세 부분으로 구성되어있다.

img

사진출처

  1. Start Line: 요청의 첫번째 줄, 세 부분으로 구성되어 있음
    • HTTP Version: 요청의 HTTP버전과 동일
    • Status Code: 응답 메세지의 상태 코드
    • Status Text: 응답 메세지의 상태를 간략하게 설명해주는 텍스트
  2. Headers: 해당 요청에 대한 추가 정보(메타 데이터)를 담고있는 부분
    • Key: Value 값으로 이루어짐(파이썬의 딕셔너리 형태)
  3. Body: 해당 요청의 실제 내용. 가장 많이 사용되는 데이터 타입은 JSON

HTTP Request Methods

해당 메소드들은 프론트엔드(클라이언트)의 입장에서 요청의 의도가 담긴 것이다! 백엔드 입장에서 생각하면 혼란이 올 수 있으니 주의할 것!

1. GET

2. POST

3. DELETE


Response Status Codes

200: OK

201: Created

400: Bad Request

401: Unauthorized

403: Forbidden

404: Not Found

500: Internal Server Error

보다 더 자세한 HTTP Response Status Codes MDN link