1 분 소요

1. HTTP

HTTP는 Hyper Text Transfer Protocol로 컴퓨터들끼리 HTML파일을 주고받을 수 있도록 하는 소통방식 또는 약속이다.

2. HTTP의 두가지 특징

2-1. 요청 / 응답 (request / response)

클라이언트가 서버에 요청 HTTP request를 보내면
서버에서 HTTP response 를 돌려보낸다

2-2. Stateless

HTTP는 stateless이다. 즉 state를 저장하지 않는다.
각각의 HTTP통신은 독립적이어서 과거의 통신에 대한 내용을 알지 못한다.
통신 내용을 알지 못하니 매 통신마다 필요한 모든 정보를 담아서 요청을 보내야 한다.

3. request 메세지 구조

3-1. Start Line

요청의 첫번째 줄이며 세 부분으로 구성되어 있다.

  • HTTP Method: 해당 요청이 의도한 액션을 정의하는 부분. 주로 GET, POST, DELETE가 많이 쓰임
  • Request target: 해당 request가 전송되는 목표 url
  • HTTP Version: 사용되는 HTTP 버전을 뜻한다.
  • e.g. GET /login HTTP/1.1 (GET 메소드로 login 이라는 요청 타겟에 HTTP 1.1 버전으로 요청을 보내겠다)

3-2. Headers

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

  • Key: Value 값으로 되어있다 (JavaScript의 객체, Python의 딕셔너리 형태라고 보면 된다)
  • Host: 요청을 보내는 목표(타겟)의 주소. 즉, 요청을 보내는 웹사이트의 기본 주소가 된다. (e.g. www.apple.co.kr)
  • User-Agent: 요청을 보내는 클라이언트의 대한 정보 (e.g. chrome, firefox, safari, etc)
  • Content-Type: 해당 요청이 보내는 메세지 body의 타입 (e.g. application/json)
  • Content-Length: body 내용의 길이
  • Authorization: 회원의 인증/인가를 처리하기 위해 로그인 토큰을 Authroization 에 담는다
    Headers: {
      Host:  
      User-Agent: 
      Content-Type: 
      Content-Length: 
      Authorization: 
    }
    

3-3. Body

클라이언트가 서버에 요청한 내용

  • 로그인시 서버에 보낼 요청 e.g.
    Body: {
      "user_email"   : "eogkr.kim@gmail.com"
      "user_password": "password"
    }
    

4. Response 메세지 구조

4-1. Status Line

  • HTTP Version: 요청의 HTTP버전과 동일
  • Status Code: 응답 메세지의 상태 코드
  • Status Text: 응답 메세지의 상태를 간략하게 설명해주는 텍스트
  • e.g. HTTP/1.1 404 Not Found (HTTP 1.1 버전으로 응답하고 있는데, 프론트엔드에서 보낸 요청인 유저의 정보를 찾을 수 없기 때문에 404 상태 메세지를 보낸다.)
  • e.g. HTTP/1.1 200 SUCCESS (HTTP 1.1 버전으로 응답하고 있는데, 프론트엔드에서 보낸 요청에 대해서 성공했기 때문에 200 상태 메세지를 보낸다.)

4-2. Headers

request의 헤더와 동일하다.

  • 다만, 응답에서만 사용되는 헤더의 정보들이 있다. (e.g. 요청하는 브라우저의 정보가 담긴 User-Agent 대신, Server 헤더가 사용된다.)

4-3. Body

request의 Body와 일반적으로 동일하다.

  • 요청의 메소드에 따라 Body가 항상 존재하지 않듯이 응답도 응답의 형태에 따라 데이터를 전송할 필요가 없는 경우엔 Body가 없을 수도 있다.
  • 로그인 성공시 e.g.
    Body: {
      "message": "SUCCESS"
      "token": "kldi#fdas%duajsf@dsasmzm" (암호화된 유저의 정보)
    }
    

태그: ,

카테고리:

업데이트:

댓글남기기