HTTP vol.1

zwundzwzig·2022년 8월 25일
1

HTTP

목록 보기
1/3
post-thumbnail

Node.js와 Terminal에서 요청과 응답을 공부하면서 HTTP 메소드의 중요성을 인지했다. 마침 HTTP를 공부할 세션이 있으니 메모해두자 싶다!!

HTTP - HyperText Transfer Protocol의 약자, 그 의미를 풀어서 살펴보자면~

웹브라우저 위에서 동작하는 언어 HyperText 를, 전송 Transfer 하는, 통신 규약 Protocol 이다.

컴퓨터 사이에서 HTML 파일을 주고 받는 HTTP라는 소통 방식에는 크게 두 가지 특징이 있다.

Request / Response (요청 / 응답)

통신 규칙이다 보니 당연하게도 요청을 보내는 주체와 응답 받는 주체가 있다!

이러한 메세지의 구조는 Start Line, Headers, Body 이렇게 세 부분으로 나뉜다.

Request (요청)

HTTP 요청은 프론트엔드(클라이언트) 측에서 백엔드(서버) 쪽으로 일(데이터 처리)을 시키기 위해 보내는 메세지이다.

Start Line은 HTTP Method, Request target, HTTP Version으로 구성됐다.

  1. 메소드는 GET, POST, DELETE를 사용해 요청이 의도한 액션을 정의한다.
  2. 타겟은 전송되는 목표 url을 뜻한다.
  3. 버전은 주로 1.1이 널리 쓰인다.
    ex) GET /login HTTP/1.1 // GET메소드로 login이라는 url 타겟에 1.1 버전으로 요청을 보낸다!

Headers는 요청에 대한 추가 정보(메타 데이터)를 담고 있는 부분이다.

  1. JavaScript의 객체 형태인 Key:Value로 구성돼 있다.
  2. Host는 요청을 보내는 타겟의 기본 주소가 된다.
  3. User-Agent는 요청을 보내는 클라이언트에 대한 정보를 나타낸다.
  4. Content-Type는 해당 요청이 보내는 메세지 body의 타입이고, 그 body의 길이는 Content-Length이다.
  5. Authorization에 회원의 인증/인가를 처리하기 위해 Log-in 토큰을 담는다.

Body는 요청의 실제 내용이다. 주로 POST 메소드를 사용한다.

Request Methods

GET 데이터를 받아올 때 사용하는 메소드.

ex) 장바구니에 담은 제품을 조회.

POST 데이터를 생성 및 수정할 때 사용하는 메소드. body가 주로 포함된다.

ex) 장바구니에 상품을 담는다.

DELETE 데이터를 삭제할 때 사용하는 메소드.

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

Response (응답)

응답은 요청에 대한 처리를 백엔드가 프론트엔드에게 알려주며 시작한다.

Start Line 은 HTTP 버전, Status Code, 텍스트로 구성돼 있다. ex) HTTP/1.1 200 SUCCESS

Headers는 요청의 헤더와 동일하지만, User-Agent 대신 Server 헤더가 사용되는 정도의 차이가 있다.

Body는 요청의 바디와 동일하지만, 전송할 필요가 없으면 없을 수도 있다. 대체로 JSON 타입이다.

ex) Body : { "message" : "SUCCESS", "token" : "유저 토큰" }

Status Code

SUCCESS

200 : OK - 문제 없이 백엔드 서버에서 처리된 뒤 오는 응답
201 : Created - POST 요청에 따라 백엔드 서버에 데이터가 잘 생성 or 수정됐다는 응답
204 : No Content - DELETE 요청이 성공했고 제공할 응답 메세지가 없는 경우

Client Error

400 : Bad Request - 요청의 body에 보내는 내용이 잘못됐다는 응답
401 : Unauthorized - 유저가 요청을 진행하려면 먼저 로그인을 하거나 회원가입이 필요하다는 의미
403 : Forbidden - 요청에 대한 권한이 없다는 의미
404 : Not Found - 요청한 URL이 존재하지 않다는 응답

Server Error

500 : Internal Server Error - 서버에서 에러 발생

Stateless

HTTP의 가장 중요한 특징이라고 한다.

각각의 요청과 응답은 독립적이기 때문에 이전에 주고 받던 내용을 알지 못한다.

즉, 통신을 할 때마다 필요한 모든 정보를 담아 보내야 한다는 의미.

그 이유로, 대형 서버를 구축했을 때 각각의 개별 컴퓨터가 특정 유저의 정보를 모두 기억하게 되면 자원의 소모가 커지기 때문에 이를 막기 위해서 라고 한다.!!

이러한 특징으로, DevTools에 있는 쿠키, 세션, 로컬 스토리지 같은 기술이 만들어졌다.

profile
개발이란?

1개의 댓글

comment-user-thumbnail
2022년 8월 28일

정성이 느껴지는 포스팅이네요!

답글 달기