Today I Learned - HTTP

minzyaaaaaa·2022년 2월 24일
2

Wecode Fullstack

목록 보기
2/7
post-thumbnail

HTTPHyperText Transfer Protocol의 약자이다.
즉, HTTP란 컴퓨터들끼리 HTML 파일을 주고 받을 수 있도록 하는 소통방식 또는 약속이다.

📌 HTTP의 특징

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

전송은 보내는 주체와 받는 주체가 있다.
보내는 주체는 받는 주체에게 요청을 보내고, 받는 주체는 요청을 보낸 주체에게 응답을 보낸다.

1-1. Request 메시지 구조

HTTP 요청은 사실 프론트엔드(클라이언트)에서 백엔드(서버)에 일(데이터 처리)을 시작하게 하기 위해 보내는 메세지이다. 메시지 구조는 크게 세 부분으로 구성되어 있다.

✔️ Start Line : 요청의 첫 번째 줄에 해당한다. Start Line도 세 부분으로 구성되어있다.

1. HTTP Method : 해당 요청이 의도한 액션을 정의하는 부분. 주로 GET, POST, DELETE가 많이 쓰임.
2. Request target : 해당 request가 전송되는 목표 url 
3. HTTP Version : 사용되는 HTTP 버전을 뜻한다. 주로 1.1버전.

✔️ Headers : 해당 요청에 대한 추가 정보(메타 데이터)를 담고 있는 부분이. Key : Value 형태로 되어있다.

✔️ Body : 해당 요청의 실제 내용. 주로 Body를 사용하는 메소드는 POST다.

1-2. Response 메시지 구조

응답의 구조도 크게 세 부분으로 구성되어 있다.

✔️ Status Line : 응답의 상태 줄이다. 응답은 요청에 대한 처리상태를 클라이언트에게 알려주면서 내용을 시작한다. 응답의 Status Line도 세 부분으로 구성된다.

1. HTTP Version : 요청의 HTTP버전과 동일
2. Status Code : 응답 메세지의 상태 코드
3. Status Text : 응답 메세지의 상태를 간략하게 설명해주는 텍스트

✔️ Headers : 요청의 헤더와 동일하다. 응답의 추가 정보(메타 데이터)를 담고 있다.

✔️ Body : 요청의 Body와 일반적으로 동일하다. 가장 많이 사용되는 Body의 데이터 타입은 JSON(JavaScript Object Notation)이다.

2. Stateless ❗️

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


📌 HTTP Request Methods

1. GET

  • 이름 그대로 어떤 데이터를 서버로부터 받아(GET)올 때 주로 사용하는 메소드
  • 데이터를 받아오기만 할 때 사용된다.

2. POST

  • 데이터를 생성 / 수정 할 때 주로 사용되는 메소드
  • 데이터를 생성 및 수정 할 때 많이 사용되기 때문에 대부분의 경우 요청에 body가 포함되서 보내진다.

3. DELETE

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

📌 Response Status Codes

200: OK

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

201: Created

  • 무언가 잘 생성되었을 때에 오는 Status Code
  • 보통 POST 메소드의 요청에 따라 백엔드 서버에 데이터가 잘 생성 또는 수정 되었을 때에 보내는 코드

400: Bad Request

  • 해당 요청이 잘못되었을 때 보내는 Status Code
  • 주로 요청의 Body에 보내는 내용이 잘못되었을 때 사용되는 코드

401: Unauthorized

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

403: Forbidden

  • 유저가 해당 요청에 대한 권한이 없을 경우

404: Not Found

  • 요청된 URI가 존재하지 않는다는 의미

500: Internal Server Error

  • 서버에서 에러가 났을 때의 Status Code
profile
레츠기릿

0개의 댓글