HTTP


HTTP? Hypertext Transfer Protocol
HyperText:ドキュメントとドキュメントのリンク
トランスポートトランスポート:トランスポート(送信ボディ-受信ボディ)トランスポートボディ
プロトコル:プロトコル、通信プロトコル(HyperTextの送信と受信方法について)

HTTP特性


1.リクエスト(リクエスト)&レスポンス(レスポンス)


要求:クライアント->サーバ
レスポンス(レスポンス):サーバ->クライアント

2. Stateless


各HTTP通信は独立しており、過去の通信内容が分からない.
->通信ごとに必要なすべての情報を含め、要求を送信します.
複数の通信のデータを連続的に処理する必要がある場合?「コイン」

リクエスト

<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 버전으로 요청을 보내겠다!

<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: 회원의 인증/인가를 처리하기 위해 로그인 토큰
  }

<body> -> 요청의 실제 내용 (POST 메소드가 주로 사용), 요청에 따라 없을 수 있다.
  ex) 로그인 시에 서버에 보낼 요청의 내용
  Body: {
      "user_email": "[email protected]"
      "user_password": "wecode"
  }

おうとう

<Status Line> -> 응답의 요청에 대한 처리상태

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

    HTTP/1.1 404 Not Found
    해석: HTTP 1.1 버전으로 응답, 요청에 대해서 정보를 찾을 수 없기 때문에(Not Found) 404 상태 메세지를 보낸다.

    HTTP/1.1 200 SUCCESS
    해석: HTTP 1.1 버전으로 응답, 요청에 대해서 성공했기 때문에 200 상태 메세지를 보낸다.
    
    #200대 :Success, #400대 : Error, #500대: server Error


<Headers> -> 응답의 메타 데이터. 다만, 응답에서만 사용되는 헤더의 정보들이 있다. (ex. 요청하는 브라우저의 정보가 담긴 User-Agent 대신, Server 헤더가 사용된다.)

<Body> -> 요청의 Body와 일반적으로 동일, 응답의 형태에 따라 데이터를 전송할 필요가 없는 경우엔 Body가 없을 수도 있다. 

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