하루에 한 번씩 듣는 http, 그게 뭐길래 그렇게 매일같이 나올까?

Devback·2020년 9월 2일
0
post-thumbnail

HTTP

hyperText
html(HyperText Markup Language)
HyperText = 문서와 문서가 링크로 연결 되어 있음을 뜻함
transfer
전송하다 = 물건이나 편지 따위를 보내다
HTML로 만든 웹페이지 문서(파일)를 보낸다.
Protocol
컴퓨터 끼리 어떻게 html 파일 주고 받을지에 대한 소통방식 또는 약속입니다.

http가 추상적으로 생각하면 어렵다고 생각할 수 있습니다. 하지만 쉽게 생각하자면 html을 전송하는 규칙이라고 생각하면 쉽습니다.

HTTP의 두가지 특징

1. Request/ Response (요청/응답) http의 핵심은 요청과 응답입니다.


HTTP 요청과 응답은 그저 메세지에 불과 합니다
http를 어렵게 생각할 필요없습니다. 우리가 유튜브에서 고양이 영상을 클릭하면 우리는 유튜브의 서버에게 영상을 요청하고 서버는 이를 우리에게 보내줍니다. 이런 일련의 과정이 http 통신 과정입니다.

2. Stateless = State(상태) + less(없음)**


HTTP 통신 (요청 / 응답)은 과거의 HTTP 통신에 대한 내용을 전혀 알지 못 함
매 통신 마다 필요한 모든 정보를 담아서 요청을 보낸니다!

만약, request1이 있고 request2가 있다면 보통 우리는 request2가 request1의 정보를 어느 정도는 기억하고 있다고 생각할 수 있는데 HTTP통신은 과거의 통신 내용을 전혀 기억하지 못하기 때문에 통신 마다 필요한 모든! 정보를 담아서 요청을 보내야 합니다.

Request 메세지 구조

http request는 단지 메세지에 불과합니다. request 메세지는 세 부분으로 되어있는데요.

Start Line
Headers
Body
으로 구성 되어 있습니다.

Start Line

  1. Http Method: 해당 요청이 의도한 액션을 정의하는 부분입니다.
    여기서 자주 등장하는 GET, POST, DELETE가 많이 쓰입니다.
  2. Request target: 해당 request가 전송되는 목표 url입니다.
  3. Http version: 말 그대로 사용되는 HTTP 버전을 말합니다. 현재 1.1버전이 널리 쓰이고 있습니다.

Get
데이터를 받아오기만 할 때
웹페이지에 접속해서 필요한 데이터를 불러올 때

POST

데이터를 생성 / 수정 할 떄 사용
Body에 담는 내용이 핵심!

Delete

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

Headers

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

정보는 key: value 형태로 되어 있습니다. javascript에선 객체, python에서는 딕셔너리

Body

해당 요청의 실제 내용. 주로 bodt를 사용하는 메소드는 POST입니다.

// 로그인 시에 서버에 보낼 요청의 내용
Body: {
	"user_email": "jun.choi@gmail.com"
	"user_password": "wecode"
}

Response 메시지 구조

응답도 마찬가지로 메시지입니다.

응답의 구조도 마찬가지로 크게 세 부분으로 나뉘어져 있습니다.

Start Line
Headers
Body

Status Line

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

Headers

요청의 헤더와 동일합니다. 다만, 응답에서만 사용되는 헤더의 정보가 잇습니다.
User-agent 대신, Server 헤더가 사용됩니다.

Body

요청의 바디와 일반적으로 동일합니다. 다만, 전송할 필요가 없는 내용은 응답하지 않을 수 있습니다.

ex) 로그인 요청에 대해 성공했을 때 응답의 내용
Body: {
	"message": "SUCCESS"
	"token": "kldiduajsadm@9df0asmzm" (암호화된 유저의 정보)
}

자주 쓰는 Request Methods

1. Get

이름 그대로 어떤 데이터를 서버로 부터 받아(get)올 때 주로 사용하는 메소드입니다.

데이터를 받아오기만 할 때 사용합니다.

가장 간단하고 가장 많이 사용하는 메소드입니다.

2. Post

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

데이터를 생성 및 수정 할 때 많이 사용되기 때문에 대부분의 경우 요청에 body가 포함돼서 나갑니다.

3. Delete

이름에서 파악할 수 있듯이 특정 데이터를 서버에서 삭제 요청을 보낼 때 사용하는 메소드입니다.

Response Status Codes

우리가 가장 많이 접하는 404코드부터 자주 만나는 코드를 정리해봤습니다.

200: ok

  • 문제 없이 서버에서 이루어지고 나서 오는 응답코드
  • 우리는 모두 200을 원합니다.

201: Created

  • 무언가가 잘 생성되었을 때에 오는 Status Code
  • 대게 POST 메소드의 요청에 따라 백엔드 서버에 데이터가 잘 생성 또는 수정 되었을 때에 보내는 코드

400: Bad Request

  • 해당 요청이 잘못되었을 때 보내는 Status Code
  • 주로 요청의 Body에 보내는 내용이 잘못되었을 때 사용되는 코드
    ex) 전화번호를 보내야 하는데 숫자가 아닌 문자열의 주소가 대신 Body에 담겼을 경우

401: Unauthorized

  • 유저가 해당 요청을 진행하려면 먼저 로그인을 하거나 회원가입이 필요하다는 의미
    ex) wish list, 좋아요 기능은 회원이 아니면 요청을 보낼 수 없음

403: Forbidden

  • 유저가 해당 요청에 대한 권한이 없다는 뜻
  • 접근 불가능한 정보에 접근했을 경우

404: Not Found

  • 요청된 url이 존재하지 않을 때

Interval Sever Error

  • 서버에서 에러가 났을 때의 Status Code
profile
나랑 같이 개발할 사람🖐

0개의 댓글