본문 바로가기
TIL

http 란?

by 은지:) 2022. 7. 28.
728x90
반응형

 

 

 

 

How do we communicate?

 

 

 

 

http 는 통신 규약을 말한다.

 

 

 

 

hyper Text : 문서와 문서가 링크로 연결되어 있음

transfer : 문서를 보냄

protocal : 프로토콜(규약), 어떻게 html 파일을 주고 받을지에 대한 방식

 

 

 

 

 

how works?

 

Request : client가 서버에 요청하는 것

Response : server 가 응답

 

한번 요청하면 한번 응답한다

 

 

 

 

 

http 특징

 

 

소통의 핵심은 요청과 응답이다. 인간의 소통방식이 컴퓨터끼리의 소통방식에도 적용되는 것.

말이 아닌 메세지의 형식으로 요청과 응답이 이루어진다.

 

 

 

 

 

 

stateless와 stateful

 

 

stateless (state + less)

 

: 개별 통신은 모두 독립이며 과거의 http 통신의 상태를 보존하지 않는다. 각 트랜지션은 모두 처음부터 시작된다. stateless application은 하나의 서비스 또는 기능을 제공하는데 콘텐츠 전달 네트워크(CDN), 웹, 프린터 서버를 이용해 단기요청을 처리한다.

 

가장 일반적인 예시는 검색창에 질문을 입력하고 엔터키를 누르는 온라인 검색이다. 단일 요청에 대해 하나의 응답이 나오므로 자동판매기와도 비슷하다.

 

 

 

 

👇 이해를 돕기 위한 예시

 

 

 

그럼 결제를 stateless 는 결제를 어떻게 할까?

 

 

 

단기 기억이기 때문에 한번에...!

 

 

 

 

 

 

예시2)

 

인스타그램의 경우 로그인을 하지 않으면 영상을 볼 수가 없다

이는 로그인에 대한 정보를 갖고 서버에 보내야하는데

이 보내는 과정에서 '로그인 토큰'을 사용한다.

 

 

 

 

 

 

stateful 

 

: stateless 와 다르게 stateful application은 현재 트랜잭션이 이전 트랜잭션에서 발생환 상황에 영향을 받는다. 이러한 이유로 stateful application 사용자가 받은 요청을 처리할 때마다 같은 서버를 사용한다.

 

 

 

 


 

 

 

 

http 메세지 구조

 

http 메세지 : 서버와 클라이언트 간에 데이터가 교환되는 방식

 

 

 

 

 

 

Request(요청) / Response(응답)

 

 

 

 

Request (요청)
: client가 server로 전달하는 메세지

 

 

 

start line / header / body

 

 

 

 

 

start line

: 요청의 첫번째 줄

 

  • http method : 의도한 액션을 정의
  • request target : 요청이 전송되는 목표 url (주소를 지정)
  • http version : http 버전

 

 

 

header

: 요청의 메타데이터를 담고 있는 부분

: 부가 정보, {key:value} 형식으로 되어있다

: 생략 가능

 

 

ex)

host : 누구

user agent: chrome

content-type : application/json

Authorization : 134 (인증 토큰을 서버로 보낼 때 쓰이는 Header)

 

 

 

 

 

body

: http 가 전송하는 데이터를 담고 있는 부분

: 데이터가 없다면 body는 비어 있음

 

 

 

ex)

 

body {

"username" : “wecode”

"password" : "wecode!"

}

 

 

 

 

 

 

 

Response
: Request에 대한 server의 답변

 

 

 

 

 

 

status line / header / body

 

 

 

 

 

 

status line

: response의 상태를 간략하게 나타내는 부분

 

  • http Version : http 의 버전
  • Status Code : 대표적으로 202, 404가 있다.
  • Status Text : 응답 상태를 간략하게 설명해주는 부분

 

 

+ status code는 모두 외울 필요가 없다.

서로 그렇게 부르기로 약속한 번호가 지정되어 있고(규약)

이를 어길시 프론트엔드와 백엔드 개발자 사이의 커뮤니케이션이 어려우니 꼭 지켜야한다.

 

 

 

 

 

<대표적인 status code>

 

 

success (200번대)

: success 200:ok 

 

error (400번대)

: 400 bad request (해당 요청이 잘못 되었을 때)

: 401 bad unauthorized (ex) 접근 권한이 없을 때, 조건이 있으면 가능.

: 404 forbidden 요청 권한 없음. 접근 불가.

 

server error (500번대)

: 500 서버 에러

 

 

 

 

 

 

header

: request의 header와 동일한 구조

 

 

 

 

body

: request의 body와 동일한 구조

: 전송할 데이터가 없다면 body는 비어있음

 

ex)

: request 에서 로그인을 요청하면 로그인 토큰을 보냄

 

“message” : "login success"

"token" : "klfmadsklfalkfma"

 

 

 

 


 

 

http request methods
: 서버에서 주어진 리소스에 수행하길 원하는 행동을 나타낸다

 

 

 

 

get / post / delete

 

 

 

 

get

: 데이터를 받아오기만 할 때 사용

ex) 쿠팡에 들어가면 쿠팡 제품들을 보여준다 (데이터를 가져옴)

 

 

post

: 바디에 담는 내용이 핵심(유저의 정보)

: 데이터를 생성, 수정할 때 사용

 

 

delete

: 서버에 저장된 특정 데이터를 삭제할 때 사용

 

 

 

 

 

ex)

 

 

get

 

장바구니에 담은 상품이 보여질 때

 

요청 : get/shop/bag http 1.1

응답 : http/1.1 200 okay

 

+ 그 전에 회원가입-로그인을 해야한다. 로그인 토큰을 갖고 장바구니에 들어가서 get 요청을 하는 것.

 

 

 

 

post

 

장바구니에 상품을 추가해서 담을 때

 

요청 : 

응답 : http:1.1 201. created

 

바디에 무슨 상품을 담았는지 넣어야하기 때문에 요청이 길고 응답이 짧다

 

 

 

 

 

delete

 

장바구니에 담긴 상품이 마음에 안 들어 삭제할 때

 

 

요청 : delete./shop/bag/30 http:! (여기서 30은 상품)

응답 : http:1.1 204 no content

 

 

요청 할 때 제품의 아이디를 명시해서 보낼 때도 있다.

 

 

 

 

728x90
반응형

'TIL' 카테고리의 다른 글

replit 중간 시험 (js)  (0) 2022.07.29
인스타 login page 클론 Day1  (0) 2022.07.28
class -instance와 object의 차이-  (0) 2022.07.24
js 용어 정리, forEach, object  (0) 2022.07.24
arrow function  (0) 2022.07.23

댓글