통신과 HTTP

shorry·2022년 3월 6일
0

Frontend

목록 보기
2/8

📌HTTP

(Hyper Text Transfer Protocol)

  • 컴퓨터들끼리 HTML 파일을 주고받을 수 있도록 하는 소통방식 또는 약속

✔️Hyper Text

  • HTML = Hyper Text Markup Language
    - 문서와 문서가 링크로 연결되도록 하는 태그로 구성된 언어
  • HTML로 만든 웹 페이지를 어떻게 주고받을 것인가?

✔️Transfer

  • 전송한다 : 보내는 주체 o / 받는 주체 o

✔️Protocol

  • 협약, 통신 규약
    - HTML을 어떻게 주고 받을지에 대한 약속
    - 원래의 목적은 HTML을 주고받기 위한 것이였으나, 범용성이 좋아서 Json파일이나 API도 주고받을 수 있다.

📌HTTP의 두가지 특징


✔️어떻게 약속하고 보내고 받는게 이루어지는가?

1. Stateless

  • 각각의 HTTP 통신은 독립적이기 때문에, 과거의 통신에 대한 내용을 전혀 알지 못한다.
  • 매 통신마다 필요한 모든 정보를 담아서 요청을 보내야 한다.
  • 따라서, 만약 여러번의 통신의 진행과정에서 연속된 데이터 처리가 필요할 경우를 위해서 로그인 토큰 또는 브라우저의 쿠키, 세션, 로컬스토리지 같은 기술이 필요에 의해 만들어짐.
    (ex. 온라인 쇼핑몰에서 로그인하고 장바구니에 물건 담기)

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

  • 우리에게 친숙한 소통방식을 컴퓨터의 소통방식에도 적용한 것.
  • 요청과 응답에 대한 구조와 메세지를 잘 파악하면 대부분의 에러를 잡아낼 수 있다.
  • 👉요청 메세지 구조

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

  1. Start Line : 요청의 첫번째 줄 / 세 부분으로 구성됨.

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

    GET /login HTTP/1.1
    해석 : GET 메소드로 login 이라는 요청 타겟에 HTTP 1.1 버전으로 요청을 보냄.

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

    Key: Value 값으로 되어있다. (JavaScript의 객체 형태)

    Headers : {
    	Host : 요청을 보내는 목표(타겟)의 주소. (요청을 보내는 웹사이트의 기본 주소)
    	(ex. www.apple.co.kr)
    
    	User-Agent : 요청을 보내는 클라이언트의 대한 정보
    	(ex. chrome, firefox, safari)
    
    	Content-Type : 해당 요청이 보내는 메세지 body의 타입 (ex. application/json)
    
    	Content-Length : body 내용의 길이
    
    	Authorization : 회원의 인증/인가를 처리하기 위해 로그인 토큰을 Authorization에 담는다.```
  3. Body : 해당 요청의 실제 내용. 주로 Body를 사용하는 메소드는 POST.

    ex) 로그인 시에 서버에 보낼 요청의 내용

    Body : {
    	“user_eamil” : “1111@gmail.com”
    	“user_password” : "1234"
     }
  • 👈응답 메세지 구조

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

  1. Status Line : 응답의 상태줄 / 처리상태를 클라이언트에게 알려주면서 내용을 시작한다. / 세부분으로 구성됨.

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

    HTTP/1.1 404 Not Found
    해석 : HTTP 1.1 버전으로 응답하고 있는데, 프론트엔드에서 보낸 요청에 대해서 유저의 정보를 찾을 수 없기 때문에 404 상태 메세지를 보낸다.

    HTTP/1.1 200 SUCCESS
    해석: HTTP 1.1 버전으로 응답하고 있는데, 프론트엔드에서 보낸 요청에 대해서 성공했기 때문에
    200 상태 메세지를 보낸다.

  2. Headers : 요청의 헤더와 동일하다. 다만, 응답에서만 사용되는 헤더의 정보들이 있다.

  3. Body : 요청의 Body와 일반적으로 동일하다. 응답의 형태에 따라 데이터를 전송할 필요가 없는 경우엔 Body가 없을 수도 있다. 가장 많이 사용되는 Body의 데이터 타입은 JSON 이다.

    ex) 로그인 요청에 대해 성공했을 때 응답의 내용

    Body : {
    	“message” : “SUCCESS”
    	“token” : "ewotiwejklds@ejgkldfjklsd" (암호화된 유저 정보)
     }

📌HTTP Request Methods


✔️GET

  • 어떤 데이터를 서버로 부터 받아올 때 주로 사용하는 메소드.
  • 데이터를 받아오기만 할 때 사용된다.
  • 가장 간단하고 많이 사용되는 HTTP 메소드

ex) 장바구니를 조회한다.

✔️POST

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

ex) 장바구니에 마음에 드는 제품을 담는다.

✔️DELETE

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

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

📌HTTP Status Codes


200: OK

201: Created

400: Bad Request

401: Unauthorized

403: Forbidden

404: Not Found

500: Internal Server Error

자세한 코드들은 HTTP Response Status Codes MDN link 참고

profile
I'm SHORRY about that

0개의 댓글