WIL #5 | HTTP basic

신승호·2021년 4월 22일
0

WIL

목록 보기
7/20

🤷 기간 : 2021.04.22 ~ 2021.04.22
🤷 자료 : https://www.notion.so/wecode/HTTP-562dae4a180e4c2f80c5110fd71b11c2
🤷 내용: HTTP 기본..!


HTTP

HTTP는 HyperText Transfer Protocol의 약자이다

1. HyperText

  • HyperText문서와 문서가 링크로 연결 되어있음을 뜻함
  • HTML(HyperText Markup Language)
    • 문서와 문서가 링크로 연결되도록 하는 태그로 구성된 언어란 뜻이다.

2. Transfer

  • 사전적 의미로 "전송하다""물건이나 편지 따위를 보낸다." 라는 의미다.
  • 우리는 우리가 만든 웹사이트를 널리 알리고 다른 사람들과 공유하기 위해서 다른 컴퓨터에게 전송해야 한다.
    • HTML만든 웹페이지 문서(파일)을 보낸다
    • 그리고 전송은 보내는 주체받는 주체가 있다는 것이 큰 특징이다.

3. Protocol

  • 프로토콜은 협약, 통신 규약 이라는 의미를 가진다.
  • 물리적으로 떨어진 컴퓨터 끼리 어떻게 HTML파일(HyperText)을 주고 받을지에 대한 약속이다.
  • 한국 사회의 소통방식(약속)인 한국어로 소통을 하듯, 컴퓨터도 컴퓨터 끼리의 소통 방식은 HTTP다.

Q. 그래서 HTTP란 무엇인가요?
A. 컴퓨터들끼리 HTML파일을 주고받을 수 있도록 하는 소통방식 또는 약속이다.

HTTP의 두가지 특징

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

소통의 핵심은 요청과 응답**
  • Request
    • 유튜브에 접속한다. 내가 평소 즐겨보던 유튜브 영상의 링크를 누른다. 그 순간 내 랩탑은 구글의 서버에게 요청을 보낸다. "골든 리트리버 영상 주세요."
  • respose
    • 구글의 서버는 이 요청을 처리해서 다시 요청을 보낸 나의 랩탑에 응답을 보낸다. "귀여운 골든 리트리버 영상 드립니다."

어렵게 생각할 필요 없다. 사실은 우리에게 친숙한 소통방식을 컴퓨터의 소통방식에도 적용한 것이다.

2. Stateless

State(상태) + less(없음)

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

> Request / Response

1. Request 메세지 구조

요청은 사실 그저 메세지에 불과하다.**

  • HTTP 요청은 사실 프론트엔드(클라이언트) 에서 백엔드(서버)일(데이터 처리)을 시작하게 하기 위해 보내는 메세지다. 이 메세지의 구조는 크게 세 부분으로 구성되어있다.
  • Start Line: 요청의 첫번째 줄에 해당한다.
    • 메소드, URL, 버전, 상태로 구성
    • POST/users/login HTTP/1.1
  • Headers: 해당 요청에 대한 추가 정보(메타 데이터)
    • host,User-Agent, Content-Length, Content-Type..
  • Body: 해당 요청의 실제 내용. 주로 Body를 사용하는 메소드는 POST다.
    • "username": "wecode" "password":"wecode123"

2. Response 메시지 구조


응답도 요청과 마찬가지로 메세지다.

HTTP 규약에 따른 응답의 구조도 또한 크게 세 부분으로 구성되어있다.

  • Status Line: 응답의 상태 줄이다. 응답은 요청에 대한 처리상태를 클라이언트에게 알려주면서 내용을 시작한다. 마치, 편지의 응답에 "응. 잘 지냈어" 라고 안부 인사를 건네는 것과 같다.
    • 메소드, URL, 버전, 상태로 구성
    • HTTP/1.1 200 SUCCESS
  • Headers: 요청의 헤더와 동일하다.
  • Body: 요청의 Body와 일반적으로 동일하다.

HTTP Request Methods

해당 메소드들은 프론트엔드(클라이언트)의 입장에서 요청의 의도가 담긴 것이다!
백엔드의 입장에서 생각하면 혼란이 올 수 있으니 주의할 것!

1. GET

  • 데이터를 받아오기만 할 때 사용된다.
  • 가장 간단하고 많이 사용되는 HTTP 메소드이다.
    • 사실 우리가 웹페이지를 띄울 때 필요한 정보들을 모두 GET메소드request을 보내서 받아온 응답을 화면에 띄우는 것이다
    • body 이 없을 수도 있따.! !! !
  • ex) 장바구니에 담은 제품을 조회한다
    • 요청 메세지
    GET /shop/bag HTTP/1.1**
    Headers: {
    	"HOST": "https://www.apple.com/kr"
    	"Authroization": "kldiduajsadm@9df0asmzm" (유저가 본인임을 증   명할 수 있는 인증/인가 토큰)
    }
    • 응답 메세지
     HTTP/1.1 200 SUCCESS
     Body: {
     	"message": "SUCCESS"
     	"carts": [
     		{
     			"productId": 10
     			"name": "Pro Display XDR - Nano-texture 글래스"
     			"price": "₩7,899,000"
     			"quantity": 1
     		},
     		{
     			"productId": 20
     			"name": "Mac Pro"
     			"price": "₩73,376,000"
     			"quantity": 2
     		}	
     	]
     }

2. POST

  • 데이터를 생성 / 수정 할 때 주로 사용되는 메소드

  • 대부분의 경우 요청에 body가 포함되서 보내진다

  • ex)장바구니에 맘에 드는 상품을 담는다

    • 요청 메세지
    POST /shop/bag HTTP/1.1
    Headers: {
    	"HOST": "https://www.apple.com/kr"
    	"Authroization": "kldiduajsadm@9df0asmzm" (유저가 본인임을 증  명할 수 있는 인증/인가 토큰)
    }
    Body: {
    	product: {
    		"productId": 30
    		"name": "12.9형 iPad Pro Wi-Fi + Cellular 128GB"
    		"color": "스페이스 그레이"
    		"price": "₩1,499,000"
    		"quantity": 1
    	}
    }
    
    • 응답 메세지
     HTTP/1.1 201 SUCCESS
     Body: {
     	"message": "SUCCESSFULLY CARTS UPDATED"
     }

3. DELETE

  • 특정 데이터를 서버에서 삭제 요청을 보낼때 쓰는 메소드
  • ex)장바구니에서 제품을 삭제한다
    • 요청 메세지
      DELETE /shop/bag HTTP/1.1
      Headers: {
      	"HOST": "https://www.apple.com/kr"
      	"Authroization": "kldiduajsadm@9df0asmzm" (유저가 본인임을 증   명할 수 있는 인증/인가 토큰)
      }
      Body: {
       	productId: 30
      }
    • 응답 메세지
      HTTP/1.1 201 SUCCESS
      Body: {
      	"message": "productId 30 DELETED"
      }

Response Status Codes

profile
신승홉니다

0개의 댓글

관련 채용 정보