HTTP, 메모 및 정리

전민승·2020년 9월 22일
0

웹서비스 개발자는 HTTP를 꼭 알고 있어야 해요.

HTTP는 HyperText Transfer Protocol의 약자에요. HTTP는 초기화를 좋아해서 매 요청과 응답의 이전 상태를 기억 못해요~

  1. HyperText는 쉽게 말해서 HTML이에요. 문서와 문서가 링크로 연결되도록 하는 태그로 구성된 언어에요.

  2. Transfer는 '전송하다'라는 의미에요. 즉 다른 사람에게 내가 만든 웹사이트를 보내줘야 해요. 그러려면 보내는 주체랑 받는 주체가 있어야 합니다.

  3. Protocol은 내 컴퓨터랑 다른 컴퓨터랑 HTML 파일을 주고받을지에 대한 약속이랍니다.

Request, Response가 HTTP의 핵심 중 핵심!
내가 스포츠 뉴스를 클릭하면 뉴스html을 서버에게 요청한 것이고
서버는 Response 응답을 하여 나에게 뉴스html을 보내준다고 이해했어요.

Request 메세지 구조를 보면 HTTP 요청은 프론트엔드에서 백엔드가 일을 시작하라고 보내는 메세지에요.

이 메세지에는 Start Line, Headers, Body 크게 3가지로 구성되었어요.

1 Start Line에는

1. HTTP Method: 해당 요청이 의도한 액션을 정의하는 부분. 주로 GET, POST, DELETE가 많이 쓰임

POST는 대용량 데이터! 그리고 서버에게 요청을 여러번 하면 다른 응답이 올 수 있어요!
GET은 서버에게 동일한 요청을 여러번 해도 동일한 응답이 와야되요.

2. Request target: 해당 request가 전송되는 목표 url 
3. HTTP Version: 말 그대로 사용되는 HTTP 버전을 뜻한다. 주로 1.1 버전이 널리 쓰임

POST /scan HTTP/1.1
해석: POST 메소드로 scan 이라는 요청 타겟에 HTTP 1.1 버전으로 	요청을 보내겠다!

Headers는 Key: Value 값으로 되어있다.

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

}

Body는 해당 요청의 실제 내용. 주로 Body는 POST 메소드를 사용!

ex) 로그인 시에 서버에 보낼 요청의 내용
Body: {
"user_email": "msjulyone@gmail.com"
"user_password": "feelsogood"
}

Response 메시지 구조 역시 크게 세 부분!

Status Line, Headers, Body로~~

  1. Status Line은 요청에대한 처리상태를 클라이언트(프론트엔드)한테 일려줍니다!

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

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

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

  2. Headers는 요청의 헤더와 동일해요!

  3. Body에 가장 많은 데이터 타입은 JSON이에요!
    ex) 로그인 요청에 대해 성공했을 때 응답의 내용
    Body: {
    "message": "SUCCESS"
    "token": "kldiduajsadm@9df0asmzm" (암호화된 유저의 정보)
    }

profile
Frontend Developer

0개의 댓글