Node.js와 Terminal에서 요청과 응답을 공부하면서 HTTP 메소드의 중요성을 인지했다. 마침 HTTP를 공부할 세션이 있으니 메모해두자 싶다!!
HTTP
- HyperText Transfer Protocol
의 약자, 그 의미를 풀어서 살펴보자면~
웹브라우저 위에서 동작하는 언어 HyperText
를, 전송 Transfer
하는, 통신 규약 Protocol
이다.
컴퓨터 사이에서 HTML 파일을 주고 받는 HTTP라는 소통 방식에는 크게 두 가지 특징이 있다.
통신 규칙이다 보니 당연하게도 요청을 보내는 주체와 응답 받는 주체가 있다!
이러한 메세지의 구조는 Start Line
, Headers
, Body
이렇게 세 부분으로 나뉜다.
HTTP 요청은 프론트엔드(클라이언트) 측에서 백엔드(서버) 쪽으로 일(데이터 처리)을 시키기 위해 보내는 메세지이다.
Start Line은 HTTP Method, Request target, HTTP Version으로 구성됐다.
Headers는 요청에 대한 추가 정보(메타 데이터)를 담고 있는 부분이다.
Body는 요청의 실제 내용이다. 주로 POST 메소드를 사용한다.
GET
데이터를 받아올 때 사용하는 메소드.
ex) 장바구니에 담은 제품을 조회.
POST
데이터를 생성 및 수정할 때 사용하는 메소드. body가 주로 포함된다.
ex) 장바구니에 상품을 담는다.
DELETE
데이터를 삭제할 때 사용하는 메소드.
ex) 장바구니에서 제품을 삭제한다.
응답은 요청에 대한 처리를 백엔드가 프론트엔드에게 알려주며 시작한다.
Start Line 은 HTTP 버전, Status Code, 텍스트로 구성돼 있다. ex) HTTP/1.1 200 SUCCESS
Headers는 요청의 헤더와 동일하지만, User-Agent 대신 Server 헤더가 사용되는 정도의 차이가 있다.
Body는 요청의 바디와 동일하지만, 전송할 필요가 없으면 없을 수도 있다. 대체로 JSON
타입이다.
ex) Body : { "message" : "SUCCESS", "token" : "유저 토큰
" }
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 - 서버에서 에러 발생
HTTP의 가장 중요한 특징이라고 한다.
각각의 요청과 응답은 독립적이기 때문에 이전에 주고 받던 내용을 알지 못한다.
즉, 통신을 할 때마다 필요한 모든 정보를 담아 보내야 한다는 의미.
그 이유로, 대형 서버를 구축했을 때 각각의 개별 컴퓨터가 특정 유저의 정보를 모두 기억하게 되면 자원의 소모가 커지기 때문에 이를 막기 위해서 라고 한다.!!
이러한 특징으로, DevTools에 있는 쿠키, 세션, 로컬 스토리지 같은 기술이 만들어졌다.
정성이 느껴지는 포스팅이네요!