[HTTP]


HTTPとは?


簡単にHyperText Transferプロトコルの略として表され、コンピュータ間でHTMLファイルを交換できるようにするコミュニケーション方法や約束.

1. HyperText


私たちは実はHyperTextとは何かを知っています.HTTPでは、HyperTextはHTMLのHyperTextと同じ意味です.言い換えれば、HTMLをもっと詳しく分析すれば、文書と文書をリンクしたタグで構成された言語です.言い換えれば、HTMLは、ウェブページを作成するためにウェブブラウザ上で操作される言語である.このHTMLを使用して生成されたWebページは、このセッションでどのように交換されますか?物語についてです.

2. Transfer


辞書の意味で「伝える」という意味があります.伝送に重大な意義がある.転送は簡単な言葉で「物や手紙などを送る」と言います.これは意味します.ローカルホスト(ノートパソコンやデスクトップ)で作成された素晴らしいHTMLファイルだけを100日間ローカルに置くと、何の意味がありますか?
例えば、私が書いた手紙は相手(両親、先生、恋人など...)持っていれば、相手に送ってこそ意味がある.手紙が来なければ応じない.それはコミュニケーションが取れていないのではないでしょうか.
そのため、作成したWebサイトを他のコンピュータに転送して、他の人と共有する必要があります.また,伝送は送信主体と受信主体の2つの大きな特徴を有する.

3. Protocol


プロトコルは、プロトコル、通信規約の意味を有する.これは物理デバイス上でHTMLファイルをどのように交換するかについての約束です.
韓国人である以上、韓国語を使うべき社会に生きている.韓国社会のコミュニケーション方式(約束)が韓国語で通じるように、コンピューターもコンピューター間のコミュニケーション方法が必要だ.このようなコミュニケーションや約束が必要なのがHTTPです.私たちが使っているインターネット上のコミュニケーションの多くはHTTPプロトコルに従っています.

HTTPの2つの特性


1.要求/応答(要求/応答)


HTTP通信の核心は要求と応答である.送信主体は受信主体に要求を送信し,受信主体は送信要求の主体に応答を送信する.

2. Stateless


各HTTP通信(リクエスト/レスポンス)は独立しているため、過去の通信(リクエスト/レスポンス)については何も知らない.以前の状態が何を意味しているのか全く分からない.各通信には、要求を送信するために必要なすべての情報が含まれます.
したがって、複数回の通信(リクエスト/レスポンス)中に連続的なデータ処理(ex.オンラインショッピングモール登録後のカート機能)が必要であれば、トークンやブラウザのクッキー、セッション、ローカルストレージなどの技術を登録する必要がある.

Request & Response


1.要求メッセージ構造


HTTPリクエストは、実際には、ワーク(データ処理)を開始するために、フロントエンド(クライアント)がバックエンド(サーバ)に送信するメッセージである.この情報の構造は大体3つの部分から構成されている.

1. Start Line


リクエストの最初のローに相当します.この行も3つの部分から構成されています.
    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 버전으로 요청을 보내겠다!

2. Headers


要求に関する追加情報(メタデータ)の部分が含まれます.
    **Key: Value** 값으로 되어있다 (JavaScript의 객체, Python의 딕셔너리 형태라고 보면 된다)
    자주 사용되는 **Headers** 의 정보에는 다음이 있다 

    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 에 담는다
    }

3. Body


要求された実際の内容.主にBodyを使う方法はPOSTです.
    **ex) 로그인 시에 서버에 보낼 요청의 내용**
    Body**:** {
    	"user_email": "[email protected]"
    	"user_password": "wecode"
    }

2.レスポンスメッセージ構造


1. Status Line


回答の状態を減らす.応答はコンテンツを開始し、クライアント要求の処理ステータスを通知します.手紙の返事に「うん、よくやったね」と言ったように.回答のStatus Lineも3つの部分で構成されています.
    1. **HTTP Version**: 요청의 **HTTP버전**과 동일
    2. **Status Code**: 응답 메세지의 **상태 코드**
    3. **Status Text**: 응답 메세지의 상태를 간략하게 설명해주는 **텍스트**

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

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

2. Headers


リクエストのタイトルと同じです.回答の付加情報(メタデータ)を含む部分.ただし、応答でのみ使用される情報もあります.(ex.ブラウザ情報を要求するユーザ-Agentではなく、サーバヘッダを使用します.)

3. Body


要求された本文と一般的に同じです.リクエストの方法によっては、Bodyが常に存在しないように.応答が応答の形式でデータを転送する必要がない場合、Bodyがない可能性があります.最も一般的なBodyデータ型はJSON(JavaScript Object Notation)である.
    **ex) 로그인 요청에 대해 성공했을 때 응답의 내용**
    Body: {
    	"message": "SUCCESS"
    	"token": "kldiduajsadm@9df0asmzm" (암호화된 유저의 정보)
    }

HTTP Request Methods


よく使われるHTTP通信方法は3つあります.
これらの方法はフロントエンド(クライアント)の立場に立って、要求の意図を含んでいます!
バックエンドの観点から考えると、混乱する可能性がありますのでご注意ください!

1. Get

  • は、その名の通り、サーバからデータ(GET)を受信するための一般的な方法
  • である.
  • データのみを受信するために使用されます.
  • 最も簡単で最も一般的なHTTPメソッド(実際には、ウェブページを開くと、必要なすべての情報がGETメソッドで要求され、受信応答が画面に表示される)
  • .

    2. POST

  • データを作成/変更するための一般的な方法
  • のデータを生成および変更する際に使用されることが多いため、多くの場合、要求にはbodyが含まれて送信される.
  • 3. DELETE


    削除要求の特定データをサーバから送信方法は、
  • の方法の名称から推定することができる.

    Response Status Codes


    これらは、実際のプロジェクトで最も多く見られる応答ステータスコードです.Status Codeの数字にはそれぞれ意味があります.このStatus Codeを見るだけで応答が正しいかどうかがわかります.

    200: OK

  • 最も一般的なStatus Code
  • 応答コード
  • は、バックエンドサーバ上で障害なく要求を処理することができる
  • 200 OK
  • が欲しい

    201: Created

  • 正常に作成されたStatus Code
  • バックエンドサーバ上でPOSTメソッドの要求に従ってデータを生成または修正する際に送信コード
  • .

    400: Bad Request

  • 要求が無効であるときに送信されるStatus Code
  • 要求本文に送信された無効なコード(
  • )
    ex)デジタル文字列ではなく、電話番号を送信する必要があるアドレスがBodyにある場合、
  • .

    401: Unauthorized

  • ユーザーは、このリクエストを行うには、先にログインまたは会員に参加する必要があります.
    ex)wishlist,賛機能会員でなければリクエストを送信できない
  • 大根
  • 403: Forbidden

  • は、ユーザが要求する権限を持たないことを示す
  • である.
  • アクセスできない情報
    ex)有料会員のみがアクセスできるデータを要求する場合、
  • トークン油
  • 404: Not Found

  • は、要求するURIが存在しないことを示す
  • である.

    500: Internal Server Error

  • サーバエラー時のStatus Code
  • API開発のバックエンド開発者が好まないコード(フロントが私のせいではないことがわかるコード)
  • Review


    力は強いけど、覚えておいて!残りの部分は、将来の重要セッション(認証/承認、フロントエンド/バックエンドログイン実践、RESTFUL API)とともに行い、徐々に理解することができる.
  • HTTPは、コンピュータ間の通信のための通信規約である.
  • HTTP通信は、要求および応答から構成される.
  • HTTP通信の各要求および応答は、以前の状態を知らない.(Stateless)