HTTP

Sua·2021년 1월 25일
0

Web

목록 보기
1/8
post-thumbnail

사진출처

HTTP란?

HTTP는 HyperText Transfer Protocol의 약자이다.

  • HyperText : 문서와 문서가 링크로 연결되어 있는 문서 체계(HTML 파일)

  • Transfer : 전송한다는 뜻, 전송에는 보내는 주체와 받는 주체가 있다.

  • Protocol : 협약, 통신 규약이라는 의미, 물리적으로 떨어진 컴퓨터 끼리 어떻게 HTML파일(HyperText)을 주고 받을지에 대한 약속

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

HTTP의 특징

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

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

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

2. Stateless(상태없음)

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

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


Request & Response

1. Request 메세지 구조

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

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

사진출처

  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 규약에 따른 응답의 구조도 또한 크게 세 부분으로 구성되어있다.

사진출처

  1. Start Line: 요청의 첫번째 줄, 세 부분으로 구성되어 있음

    • HTTP Version: 요청의 HTTP버전과 동일
    • Status Code: 응답 메세지의 상태 코드
    • Status Text: 응답 메세지의 상태를 간략하게 설명해주는 텍스트
  2. Headers: 해당 요청에 대한 추가 정보(메타 데이터)를 담고있는 부분

    • Key: Value 값으로 이루어짐(파이썬의 딕셔너리 형태)
  3. Body: 해당 요청의 실제 내용. 가장 많이 사용되는 데이터 타입은 JSON


HTTP Request Methods

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

1. GET

  • 어떤 데이터를 서버로 부터 받아올 때 사용하는 메소드

    장바구니에 담은 제품을 조회한다

2. POST

  • 데이터를 생성 / 수정 할 때 주로 사용되는 메소드(대부분의 경우 요청에 body가 포함)

    장바구니에 맘에 드는 상품을 담는다

3. DELETE

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

    장바구니에서 제품을 삭제한다


Response Status Codes

200: OK

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

201: Created

  • 무언가가 잘 생성되었을 때에(Successfully Created) 오는 Status Code

400: Bad Request

  • 해당 요청이 잘못되었을 때 보내는 Status Code

401: Unauthorized

  • 유저가 해당 요청을 진행하려면 먼저 로그인을 하거나 회원가입이 필요하다는 의미

403: Forbidden

  • 유저가 해당 요청에 대한 권한이 없다는 뜻

404: Not Found

500: Internal Server Error

  • 서버에서 에러가 났을 때의 Status Code

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

profile
Leave your comfort zone

0개의 댓글